From 496142c201655f9d54ea3e93250337b9bc58831b Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 19:35:15 +0100 Subject: [PATCH 01/13] py3: Use absolute imports by default --- docs/api/http-server.rst | 6 +++--- docs/conf.py | 2 +- docs/extensiondev.rst | 6 +++--- mopidy/__init__.py | 2 +- mopidy/__main__.py | 2 +- mopidy/audio/__init__.py | 2 +- mopidy/audio/actor.py | 2 +- mopidy/audio/constants.py | 2 +- mopidy/audio/dummy.py | 2 +- mopidy/audio/listener.py | 2 +- mopidy/audio/playlists.py | 2 +- mopidy/audio/scan.py | 2 +- mopidy/audio/utils.py | 2 +- mopidy/backend/__init__.py | 2 +- mopidy/backend/dummy.py | 2 +- mopidy/commands.py | 2 +- mopidy/config/__init__.py | 2 +- mopidy/config/keyring.py | 2 +- mopidy/config/schemas.py | 2 +- mopidy/config/types.py | 2 +- mopidy/config/validators.py | 2 +- mopidy/core/__init__.py | 2 +- mopidy/core/actor.py | 2 +- mopidy/core/history.py | 2 +- mopidy/core/library.py | 2 +- mopidy/core/listener.py | 2 +- mopidy/core/playback.py | 2 +- mopidy/core/playlists.py | 2 +- mopidy/core/tracklist.py | 2 +- mopidy/exceptions.py | 2 +- mopidy/ext.py | 2 +- mopidy/http/__init__.py | 2 +- mopidy/http/actor.py | 2 +- mopidy/http/handlers.py | 2 +- mopidy/listener.py | 2 +- mopidy/local/__init__.py | 2 +- mopidy/local/actor.py | 2 +- mopidy/local/commands.py | 2 +- mopidy/local/json.py | 2 +- mopidy/local/library.py | 2 +- mopidy/local/playback.py | 2 +- mopidy/local/playlists.py | 2 +- mopidy/local/search.py | 2 +- mopidy/local/storage.py | 2 +- mopidy/local/translator.py | 2 +- mopidy/mixer.py | 2 +- mopidy/models.py | 2 +- mopidy/mpd/__init__.py | 2 +- mopidy/mpd/actor.py | 2 +- mopidy/mpd/dispatcher.py | 2 +- mopidy/mpd/exceptions.py | 2 +- mopidy/mpd/protocol/__init__.py | 2 +- mopidy/mpd/protocol/audio_output.py | 2 +- mopidy/mpd/protocol/channels.py | 2 +- mopidy/mpd/protocol/command_list.py | 2 +- mopidy/mpd/protocol/connection.py | 2 +- mopidy/mpd/protocol/current_playlist.py | 2 +- mopidy/mpd/protocol/music_db.py | 2 +- mopidy/mpd/protocol/playback.py | 2 +- mopidy/mpd/protocol/reflection.py | 2 +- mopidy/mpd/protocol/status.py | 2 +- mopidy/mpd/protocol/stickers.py | 2 +- mopidy/mpd/protocol/stored_playlists.py | 2 +- mopidy/mpd/session.py | 2 +- mopidy/mpd/tokenize.py | 2 +- mopidy/mpd/translator.py | 2 +- mopidy/softwaremixer/__init__.py | 2 +- mopidy/softwaremixer/mixer.py | 2 +- mopidy/stream/__init__.py | 2 +- mopidy/stream/actor.py | 2 +- mopidy/utils/__init__.py | 2 +- mopidy/utils/deps.py | 2 +- mopidy/utils/encoding.py | 2 +- mopidy/utils/formatting.py | 2 +- mopidy/utils/jsonrpc.py | 2 +- mopidy/utils/log.py | 2 +- mopidy/utils/network.py | 2 +- mopidy/utils/path.py | 2 +- mopidy/utils/process.py | 2 +- mopidy/utils/versioning.py | 2 +- mopidy/zeroconf.py | 2 +- setup.py | 2 +- tests/__init__.py | 2 +- tests/__main__.py | 2 +- tests/audio/test_actor.py | 2 +- tests/audio/test_listener.py | 2 +- tests/audio/test_playlists.py | 2 +- tests/audio/test_scan.py | 2 +- tests/backend/__init__.py | 2 +- tests/backend/test_listener.py | 2 +- tests/config/test_config.py | 2 +- tests/config/test_schemas.py | 2 +- tests/config/test_types.py | 2 +- tests/config/test_validator.py | 2 +- tests/core/__init__.py | 2 +- tests/core/test_actor.py | 2 +- tests/core/test_events.py | 2 +- tests/core/test_history.py | 2 +- tests/core/test_library.py | 2 +- tests/core/test_listener.py | 2 +- tests/core/test_playback.py | 2 +- tests/core/test_playlists.py | 2 +- tests/core/test_tracklist.py | 2 +- tests/http/test_events.py | 2 +- tests/http/test_handlers.py | 2 +- tests/http/test_server.py | 2 +- tests/local/__init__.py | 2 +- tests/local/test_events.py | 2 +- tests/local/test_json.py | 2 +- tests/local/test_library.py | 2 +- tests/local/test_playback.py | 2 +- tests/local/test_playlists.py | 2 +- tests/local/test_tracklist.py | 2 +- tests/local/test_translator.py | 2 +- tests/mpd/__init__.py | 2 +- tests/mpd/protocol/__init__.py | 2 +- tests/mpd/protocol/test_audio_output.py | 2 +- tests/mpd/protocol/test_authentication.py | 2 +- tests/mpd/protocol/test_channels.py | 2 +- tests/mpd/protocol/test_command_list.py | 2 +- tests/mpd/protocol/test_connection.py | 2 +- tests/mpd/protocol/test_current_playlist.py | 2 +- tests/mpd/protocol/test_idle.py | 2 +- tests/mpd/protocol/test_music_db.py | 2 +- tests/mpd/protocol/test_playback.py | 2 +- tests/mpd/protocol/test_reflection.py | 2 +- tests/mpd/protocol/test_regression.py | 2 +- tests/mpd/protocol/test_status.py | 2 +- tests/mpd/protocol/test_stickers.py | 2 +- tests/mpd/protocol/test_stored_playlists.py | 2 +- tests/mpd/test_commands.py | 2 +- tests/mpd/test_dispatcher.py | 2 +- tests/mpd/test_exceptions.py | 2 +- tests/mpd/test_status.py | 2 +- tests/mpd/test_tokenizer.py | 2 +- tests/mpd/test_translator.py | 2 +- tests/test_commands.py | 2 +- tests/test_exceptions.py | 2 +- tests/test_ext.py | 2 +- tests/test_help.py | 2 +- tests/test_mixer.py | 2 +- tests/test_models.py | 2 +- tests/test_version.py | 2 +- tests/utils/__init__.py | 2 +- tests/utils/network/__init__.py | 2 +- tests/utils/network/test_connection.py | 2 +- tests/utils/network/test_lineprotocol.py | 2 +- tests/utils/network/test_server.py | 2 +- tests/utils/network/test_utils.py | 2 +- tests/utils/test_deps.py | 2 +- tests/utils/test_encoding.py | 2 +- tests/utils/test_jsonrpc.py | 2 +- tests/utils/test_path.py | 2 +- 153 files changed, 157 insertions(+), 157 deletions(-) diff --git a/docs/api/http-server.rst b/docs/api/http-server.rst index ee6f55fb..317a77c5 100644 --- a/docs/api/http-server.rst +++ b/docs/api/http-server.rst @@ -43,7 +43,7 @@ available at http://localhost:6680/mywebclient/foo.html. :: - from __future__ import unicode_literals + from __future__ import absolute_import, unicode_literals import os @@ -95,7 +95,7 @@ Mopidy $version``. :: - from __future__ import unicode_literals + from __future__ import absolute_import, unicode_literals import os @@ -149,7 +149,7 @@ http://localhost:6680/mywebclient/. :: - from __future__ import unicode_literals + from __future__ import absolute_import, unicode_literals import os diff --git a/docs/conf.py b/docs/conf.py index 1eb6dd33..0715f326 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -2,7 +2,7 @@ """Mopidy documentation build configuration file""" -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import sys diff --git a/docs/extensiondev.rst b/docs/extensiondev.rst index 100e5b85..c6a88619 100644 --- a/docs/extensiondev.rst +++ b/docs/extensiondev.rst @@ -159,7 +159,7 @@ class that will connect the rest of the dots. :: - from __future__ import unicode_literals + from __future__ import absolute_import, unicode_literals import re from setuptools import setup, find_packages @@ -255,7 +255,7 @@ default config in documentation without duplicating it. This is ``mopidy_soundspot/__init__.py``:: - from __future__ import unicode_literals + from __future__ import absolute_import, unicode_literals import logging import os @@ -449,7 +449,7 @@ Python conventions In general, it would be nice if Mopidy extensions followed the same :ref:`codestyle` as Mopidy itself, as they're part of the same ecosystem. Among other things, the code style guide explains why all the above examples start -with ``from __future__ import unicode_literals``. +with ``from __future__ import absolute_import, unicode_literals``. Use of Mopidy APIs diff --git a/mopidy/__init__.py b/mopidy/__init__.py index 8b5b8e18..42da1ccd 100644 --- a/mopidy/__init__.py +++ b/mopidy/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import platform import sys diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 9620b936..1aa85c07 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import print_function, absolute_import, unicode_literals import logging import os diff --git a/mopidy/audio/__init__.py b/mopidy/audio/__init__.py index fd6d41c9..1d47e682 100644 --- a/mopidy/audio/__init__.py +++ b/mopidy/audio/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals # flake8: noqa from .actor import Audio diff --git a/mopidy/audio/actor.py b/mopidy/audio/actor.py index 95ccb841..190895dc 100644 --- a/mopidy/audio/actor.py +++ b/mopidy/audio/actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import os diff --git a/mopidy/audio/constants.py b/mopidy/audio/constants.py index 08ad9768..718fde1b 100644 --- a/mopidy/audio/constants.py +++ b/mopidy/audio/constants.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals class PlaybackState(object): diff --git a/mopidy/audio/dummy.py b/mopidy/audio/dummy.py index fe749888..f7fa9f0d 100644 --- a/mopidy/audio/dummy.py +++ b/mopidy/audio/dummy.py @@ -4,7 +4,7 @@ This class implements the audio API in the simplest way possible. It is used in tests of the core and backends. """ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import pykka diff --git a/mopidy/audio/listener.py b/mopidy/audio/listener.py index b272d15a..6beb4444 100644 --- a/mopidy/audio/listener.py +++ b/mopidy/audio/listener.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy import listener diff --git a/mopidy/audio/playlists.py b/mopidy/audio/playlists.py index 37ef2569..e091d8ff 100644 --- a/mopidy/audio/playlists.py +++ b/mopidy/audio/playlists.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import ConfigParser as configparser import io diff --git a/mopidy/audio/scan.py b/mopidy/audio/scan.py index 53f00ac0..b3fe2c4d 100644 --- a/mopidy/audio/scan.py +++ b/mopidy/audio/scan.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import datetime import os diff --git a/mopidy/audio/utils.py b/mopidy/audio/utils.py index f9036748..0fcb2978 100644 --- a/mopidy/audio/utils.py +++ b/mopidy/audio/utils.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import pygst pygst.require('0.10') diff --git a/mopidy/backend/__init__.py b/mopidy/backend/__init__.py index 712bfafe..016f2575 100644 --- a/mopidy/backend/__init__.py +++ b/mopidy/backend/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import copy diff --git a/mopidy/backend/dummy.py b/mopidy/backend/dummy.py index 94b01433..529124c4 100644 --- a/mopidy/backend/dummy.py +++ b/mopidy/backend/dummy.py @@ -4,7 +4,7 @@ This backend implements the backend API in the simplest way possible. It is used in tests of the frontends. """ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import pykka diff --git a/mopidy/commands.py b/mopidy/commands.py index 237ec86b..16c606c8 100644 --- a/mopidy/commands.py +++ b/mopidy/commands.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import print_function, absolute_import, unicode_literals import argparse import collections diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index 7c0898aa..b9a27eb7 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import ConfigParser as configparser import io diff --git a/mopidy/config/keyring.py b/mopidy/config/keyring.py index 4d251f52..cce15bd9 100644 --- a/mopidy/config/keyring.py +++ b/mopidy/config/keyring.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/config/schemas.py b/mopidy/config/schemas.py index 3d997ffe..56826a53 100644 --- a/mopidy/config/schemas.py +++ b/mopidy/config/schemas.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import collections diff --git a/mopidy/config/types.py b/mopidy/config/types.py index 4498cb67..ebca1a78 100644 --- a/mopidy/config/types.py +++ b/mopidy/config/types.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import re diff --git a/mopidy/config/validators.py b/mopidy/config/validators.py index a0ca25d9..d0549659 100644 --- a/mopidy/config/validators.py +++ b/mopidy/config/validators.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals # TODO: add validate regexp? diff --git a/mopidy/core/__init__.py b/mopidy/core/__init__.py index 019034fc..7fa7e299 100644 --- a/mopidy/core/__init__.py +++ b/mopidy/core/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals # flake8: noqa from .actor import Core diff --git a/mopidy/core/actor.py b/mopidy/core/actor.py index edf13679..75c06f69 100644 --- a/mopidy/core/actor.py +++ b/mopidy/core/actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import collections import itertools diff --git a/mopidy/core/history.py b/mopidy/core/history.py index 379e3b34..9d7cf59f 100644 --- a/mopidy/core/history.py +++ b/mopidy/core/history.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import copy import logging diff --git a/mopidy/core/library.py b/mopidy/core/library.py index 50d7df19..2ada23d4 100644 --- a/mopidy/core/library.py +++ b/mopidy/core/library.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import collections import operator diff --git a/mopidy/core/listener.py b/mopidy/core/listener.py index f0bb1ea3..2c027e1b 100644 --- a/mopidy/core/listener.py +++ b/mopidy/core/listener.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy import listener diff --git a/mopidy/core/playback.py b/mopidy/core/playback.py index 8d5f05da..15a487b2 100644 --- a/mopidy/core/playback.py +++ b/mopidy/core/playback.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import urlparse diff --git a/mopidy/core/playlists.py b/mopidy/core/playlists.py index d5c03bb3..a6ab654f 100644 --- a/mopidy/core/playlists.py +++ b/mopidy/core/playlists.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import itertools import urlparse diff --git a/mopidy/core/tracklist.py b/mopidy/core/tracklist.py index 4c567086..e3e90de5 100644 --- a/mopidy/core/tracklist.py +++ b/mopidy/core/tracklist.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import collections import logging diff --git a/mopidy/exceptions.py b/mopidy/exceptions.py index 532f6853..85169794 100644 --- a/mopidy/exceptions.py +++ b/mopidy/exceptions.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals class MopidyException(Exception): diff --git a/mopidy/ext.py b/mopidy/ext.py index 3333ec3f..7666bb3a 100644 --- a/mopidy/ext.py +++ b/mopidy/ext.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import collections import logging diff --git a/mopidy/http/__init__.py b/mopidy/http/__init__.py index 95675386..3fa4bcd6 100644 --- a/mopidy/http/__init__.py +++ b/mopidy/http/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import os diff --git a/mopidy/http/actor.py b/mopidy/http/actor.py index 57e2f46a..d37a5672 100644 --- a/mopidy/http/actor.py +++ b/mopidy/http/actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import json import logging diff --git a/mopidy/http/handlers.py b/mopidy/http/handlers.py index 3bfc1eff..721e419c 100644 --- a/mopidy/http/handlers.py +++ b/mopidy/http/handlers.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import os diff --git a/mopidy/listener.py b/mopidy/listener.py index c8ecfa53..41f8e8e0 100644 --- a/mopidy/listener.py +++ b/mopidy/listener.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/local/__init__.py b/mopidy/local/__init__.py index a0bb7bc4..73d07f75 100644 --- a/mopidy/local/__init__.py +++ b/mopidy/local/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import os diff --git a/mopidy/local/actor.py b/mopidy/local/actor.py index 590d7867..f315607a 100644 --- a/mopidy/local/actor.py +++ b/mopidy/local/actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/local/commands.py b/mopidy/local/commands.py index 1b8981df..cfea7ef9 100644 --- a/mopidy/local/commands.py +++ b/mopidy/local/commands.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import logging import os diff --git a/mopidy/local/json.py b/mopidy/local/json.py index 30fbb562..6ebe36b7 100644 --- a/mopidy/local/json.py +++ b/mopidy/local/json.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import, unicode_literals +from __future__ import absolute_import, absolute_import, unicode_literals import collections import gzip diff --git a/mopidy/local/library.py b/mopidy/local/library.py index ec5f4869..f3828f1b 100644 --- a/mopidy/local/library.py +++ b/mopidy/local/library.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/local/playback.py b/mopidy/local/playback.py index aa0e5b3a..92dc6e15 100644 --- a/mopidy/local/playback.py +++ b/mopidy/local/playback.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/local/playlists.py b/mopidy/local/playlists.py index f22c6fde..1496867c 100644 --- a/mopidy/local/playlists.py +++ b/mopidy/local/playlists.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import glob import logging diff --git a/mopidy/local/search.py b/mopidy/local/search.py index 68d0a1f5..375c0daa 100644 --- a/mopidy/local/search.py +++ b/mopidy/local/search.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.models import Album, SearchResult diff --git a/mopidy/local/storage.py b/mopidy/local/storage.py index d83bdf77..9cdcd12e 100644 --- a/mopidy/local/storage.py +++ b/mopidy/local/storage.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import os diff --git a/mopidy/local/translator.py b/mopidy/local/translator.py index 33b67775..2bfe8ead 100644 --- a/mopidy/local/translator.py +++ b/mopidy/local/translator.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import os diff --git a/mopidy/mixer.py b/mopidy/mixer.py index be793a7c..e277fe55 100644 --- a/mopidy/mixer.py +++ b/mopidy/mixer.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/models.py b/mopidy/models.py index bedf8ca5..5508d4de 100644 --- a/mopidy/models.py +++ b/mopidy/models.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import json diff --git a/mopidy/mpd/__init__.py b/mopidy/mpd/__init__.py index 77aaf83f..05c83baa 100644 --- a/mopidy/mpd/__init__.py +++ b/mopidy/mpd/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os diff --git a/mopidy/mpd/actor.py b/mopidy/mpd/actor.py index 49d9556e..c8123c32 100644 --- a/mopidy/mpd/actor.py +++ b/mopidy/mpd/actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/mpd/dispatcher.py b/mopidy/mpd/dispatcher.py index c947c13d..52b57258 100644 --- a/mopidy/mpd/dispatcher.py +++ b/mopidy/mpd/dispatcher.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import re diff --git a/mopidy/mpd/exceptions.py b/mopidy/mpd/exceptions.py index 6738b4c9..e7ab0068 100644 --- a/mopidy/mpd/exceptions.py +++ b/mopidy/mpd/exceptions.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.exceptions import MopidyException diff --git a/mopidy/mpd/protocol/__init__.py b/mopidy/mpd/protocol/__init__.py index f0ae814b..38fcb33a 100644 --- a/mopidy/mpd/protocol/__init__.py +++ b/mopidy/mpd/protocol/__init__.py @@ -10,7 +10,7 @@ implement our own MPD server which is compatible with the numerous existing `MPD clients `_. """ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import inspect diff --git a/mopidy/mpd/protocol/audio_output.py b/mopidy/mpd/protocol/audio_output.py index 2c7aea16..4a5310f5 100644 --- a/mopidy/mpd/protocol/audio_output.py +++ b/mopidy/mpd/protocol/audio_output.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.mpd import exceptions, protocol diff --git a/mopidy/mpd/protocol/channels.py b/mopidy/mpd/protocol/channels.py index 4ae00622..7699abe3 100644 --- a/mopidy/mpd/protocol/channels.py +++ b/mopidy/mpd/protocol/channels.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.mpd import exceptions, protocol diff --git a/mopidy/mpd/protocol/command_list.py b/mopidy/mpd/protocol/command_list.py index d8551105..028134a9 100644 --- a/mopidy/mpd/protocol/command_list.py +++ b/mopidy/mpd/protocol/command_list.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.mpd import exceptions, protocol diff --git a/mopidy/mpd/protocol/connection.py b/mopidy/mpd/protocol/connection.py index 41896acf..f087847a 100644 --- a/mopidy/mpd/protocol/connection.py +++ b/mopidy/mpd/protocol/connection.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.mpd import exceptions, protocol diff --git a/mopidy/mpd/protocol/current_playlist.py b/mopidy/mpd/protocol/current_playlist.py index a2d60e96..33c090e3 100644 --- a/mopidy/mpd/protocol/current_playlist.py +++ b/mopidy/mpd/protocol/current_playlist.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import warnings diff --git a/mopidy/mpd/protocol/music_db.py b/mopidy/mpd/protocol/music_db.py index a5757915..8dfc1d2c 100644 --- a/mopidy/mpd/protocol/music_db.py +++ b/mopidy/mpd/protocol/music_db.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import functools import itertools diff --git a/mopidy/mpd/protocol/playback.py b/mopidy/mpd/protocol/playback.py index 5b63c561..07102492 100644 --- a/mopidy/mpd/protocol/playback.py +++ b/mopidy/mpd/protocol/playback.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import warnings diff --git a/mopidy/mpd/protocol/reflection.py b/mopidy/mpd/protocol/reflection.py index 4308c560..7feccca1 100644 --- a/mopidy/mpd/protocol/reflection.py +++ b/mopidy/mpd/protocol/reflection.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.mpd import exceptions, protocol diff --git a/mopidy/mpd/protocol/status.py b/mopidy/mpd/protocol/status.py index 8f97c2e4..9dae635e 100644 --- a/mopidy/mpd/protocol/status.py +++ b/mopidy/mpd/protocol/status.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import pykka diff --git a/mopidy/mpd/protocol/stickers.py b/mopidy/mpd/protocol/stickers.py index 4d535423..30b917c6 100644 --- a/mopidy/mpd/protocol/stickers.py +++ b/mopidy/mpd/protocol/stickers.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.mpd import exceptions, protocol diff --git a/mopidy/mpd/protocol/stored_playlists.py b/mopidy/mpd/protocol/stored_playlists.py index f4d48ff0..fcfc69ce 100644 --- a/mopidy/mpd/protocol/stored_playlists.py +++ b/mopidy/mpd/protocol/stored_playlists.py @@ -1,4 +1,4 @@ -from __future__ import division, unicode_literals +from __future__ import division, absolute_import, unicode_literals import datetime diff --git a/mopidy/mpd/session.py b/mopidy/mpd/session.py index f0317ede..0e606c8f 100644 --- a/mopidy/mpd/session.py +++ b/mopidy/mpd/session.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/mpd/tokenize.py b/mopidy/mpd/tokenize.py index bc0d6b3f..70208ae9 100644 --- a/mopidy/mpd/tokenize.py +++ b/mopidy/mpd/tokenize.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import re diff --git a/mopidy/mpd/translator.py b/mopidy/mpd/translator.py index f3264a46..5c37977c 100644 --- a/mopidy/mpd/translator.py +++ b/mopidy/mpd/translator.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import re diff --git a/mopidy/softwaremixer/__init__.py b/mopidy/softwaremixer/__init__.py index 242069eb..9e08a719 100644 --- a/mopidy/softwaremixer/__init__.py +++ b/mopidy/softwaremixer/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os diff --git a/mopidy/softwaremixer/mixer.py b/mopidy/softwaremixer/mixer.py index 71d178f5..dadbbec8 100644 --- a/mopidy/softwaremixer/mixer.py +++ b/mopidy/softwaremixer/mixer.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging diff --git a/mopidy/stream/__init__.py b/mopidy/stream/__init__.py index 2cb77365..de01cb84 100644 --- a/mopidy/stream/__init__.py +++ b/mopidy/stream/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os diff --git a/mopidy/stream/actor.py b/mopidy/stream/actor.py index b17dfcea..b6336fbe 100644 --- a/mopidy/stream/actor.py +++ b/mopidy/stream/actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import fnmatch import logging diff --git a/mopidy/utils/__init__.py b/mopidy/utils/__init__.py index baffc488..01e6d4f4 100644 --- a/mopidy/utils/__init__.py +++ b/mopidy/utils/__init__.py @@ -1 +1 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals diff --git a/mopidy/utils/deps.py b/mopidy/utils/deps.py index ea64a0a0..886b8818 100644 --- a/mopidy/utils/deps.py +++ b/mopidy/utils/deps.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import functools import os diff --git a/mopidy/utils/encoding.py b/mopidy/utils/encoding.py index a21b3384..af781838 100644 --- a/mopidy/utils/encoding.py +++ b/mopidy/utils/encoding.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import locale diff --git a/mopidy/utils/formatting.py b/mopidy/utils/formatting.py index 3c313eae..9cef7afe 100644 --- a/mopidy/utils/formatting.py +++ b/mopidy/utils/formatting.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import re import unicodedata diff --git a/mopidy/utils/jsonrpc.py b/mopidy/utils/jsonrpc.py index 85565262..4eb85e9b 100644 --- a/mopidy/utils/jsonrpc.py +++ b/mopidy/utils/jsonrpc.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import inspect import json diff --git a/mopidy/utils/log.py b/mopidy/utils/log.py index c461b434..396c05b9 100644 --- a/mopidy/utils/log.py +++ b/mopidy/utils/log.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import logging.config diff --git a/mopidy/utils/network.py b/mopidy/utils/network.py index 4ea25026..ce02ef0e 100644 --- a/mopidy/utils/network.py +++ b/mopidy/utils/network.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import errno import logging diff --git a/mopidy/utils/path.py b/mopidy/utils/path.py index be735ae5..4efcfa20 100644 --- a/mopidy/utils/path.py +++ b/mopidy/utils/path.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import Queue as queue import logging diff --git a/mopidy/utils/process.py b/mopidy/utils/process.py index 2887e705..cf9cbd0a 100644 --- a/mopidy/utils/process.py +++ b/mopidy/utils/process.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import signal diff --git a/mopidy/utils/versioning.py b/mopidy/utils/versioning.py index 94578121..db1aa949 100644 --- a/mopidy/utils/versioning.py +++ b/mopidy/utils/versioning.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import subprocess diff --git a/mopidy/zeroconf.py b/mopidy/zeroconf.py index 9f726957..0c42dd74 100644 --- a/mopidy/zeroconf.py +++ b/mopidy/zeroconf.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import socket diff --git a/setup.py b/setup.py index 900fcf38..384aaec5 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import re diff --git a/tests/__init__.py b/tests/__init__.py index a384669e..6ae07bcc 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os diff --git a/tests/__main__.py b/tests/__main__.py index 164f1e66..ae7a18e6 100644 --- a/tests/__main__.py +++ b/tests/__main__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import nose diff --git a/tests/audio/test_actor.py b/tests/audio/test_actor.py index 8db7f61f..ab897595 100644 --- a/tests/audio/test_actor.py +++ b/tests/audio/test_actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import threading import unittest diff --git a/tests/audio/test_listener.py b/tests/audio/test_listener.py index 56574411..08b03e6c 100644 --- a/tests/audio/test_listener.py +++ b/tests/audio/test_listener.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/audio/test_playlists.py b/tests/audio/test_playlists.py index 51c36eac..eb79cfeb 100644 --- a/tests/audio/test_playlists.py +++ b/tests/audio/test_playlists.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import io import unittest diff --git a/tests/audio/test_scan.py b/tests/audio/test_scan.py index 2e91ce32..45a4aa6a 100644 --- a/tests/audio/test_scan.py +++ b/tests/audio/test_scan.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import unittest diff --git a/tests/backend/__init__.py b/tests/backend/__init__.py index baffc488..01e6d4f4 100644 --- a/tests/backend/__init__.py +++ b/tests/backend/__init__.py @@ -1 +1 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals diff --git a/tests/backend/test_listener.py b/tests/backend/test_listener.py index 9e080d31..6ec39308 100644 --- a/tests/backend/test_listener.py +++ b/tests/backend/test_listener.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/config/test_config.py b/tests/config/test_config.py index da0e5192..cd97d9a8 100644 --- a/tests/config/test_config.py +++ b/tests/config/test_config.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/config/test_schemas.py b/tests/config/test_schemas.py index 86cd69f1..910b5004 100644 --- a/tests/config/test_schemas.py +++ b/tests/config/test_schemas.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import unittest diff --git a/tests/config/test_types.py b/tests/config/test_types.py index dfb439be..713eb4c0 100644 --- a/tests/config/test_types.py +++ b/tests/config/test_types.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import logging import socket diff --git a/tests/config/test_validator.py b/tests/config/test_validator.py index ce773340..8172df0c 100644 --- a/tests/config/test_validator.py +++ b/tests/config/test_validator.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/__init__.py b/tests/core/__init__.py index baffc488..01e6d4f4 100644 --- a/tests/core/__init__.py +++ b/tests/core/__init__.py @@ -1 +1 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals diff --git a/tests/core/test_actor.py b/tests/core/test_actor.py index 79d778af..a3cb93da 100644 --- a/tests/core/test_actor.py +++ b/tests/core/test_actor.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_events.py b/tests/core/test_events.py index ab7906a8..ebe099f3 100644 --- a/tests/core/test_events.py +++ b/tests/core/test_events.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_history.py b/tests/core/test_history.py index 75b4dc76..eb1404b5 100644 --- a/tests/core/test_history.py +++ b/tests/core/test_history.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_library.py b/tests/core/test_library.py index 9eac3ebd..cbbea2e3 100644 --- a/tests/core/test_library.py +++ b/tests/core/test_library.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_listener.py b/tests/core/test_listener.py index c0075450..22bb9146 100644 --- a/tests/core/test_listener.py +++ b/tests/core/test_listener.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_playback.py b/tests/core/test_playback.py index ce6c8571..18b73b17 100644 --- a/tests/core/test_playback.py +++ b/tests/core/test_playback.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_playlists.py b/tests/core/test_playlists.py index 49f617b5..20577763 100644 --- a/tests/core/test_playlists.py +++ b/tests/core/test_playlists.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/core/test_tracklist.py b/tests/core/test_tracklist.py index b681e097..38885912 100644 --- a/tests/core/test_tracklist.py +++ b/tests/core/test_tracklist.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/http/test_events.py b/tests/http/test_events.py index d03778a6..43d9db58 100644 --- a/tests/http/test_events.py +++ b/tests/http/test_events.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import json import unittest diff --git a/tests/http/test_handlers.py b/tests/http/test_handlers.py index 28e53855..5c958d9a 100644 --- a/tests/http/test_handlers.py +++ b/tests/http/test_handlers.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os diff --git a/tests/http/test_server.py b/tests/http/test_server.py index b3cfa92c..3c7d7c88 100644 --- a/tests/http/test_server.py +++ b/tests/http/test_server.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os diff --git a/tests/local/__init__.py b/tests/local/__init__.py index f408139f..b1520768 100644 --- a/tests/local/__init__.py +++ b/tests/local/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals def generate_song(i): diff --git a/tests/local/test_events.py b/tests/local/test_events.py index f6ae5360..7a85731e 100644 --- a/tests/local/test_events.py +++ b/tests/local/test_events.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/local/test_json.py b/tests/local/test_json.py index 54afefe7..2da13632 100644 --- a/tests/local/test_json.py +++ b/tests/local/test_json.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/local/test_library.py b/tests/local/test_library.py index c1f2bcbd..3be41333 100644 --- a/tests/local/test_library.py +++ b/tests/local/test_library.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import shutil diff --git a/tests/local/test_playback.py b/tests/local/test_playback.py index ba051fa0..67e49178 100644 --- a/tests/local/test_playback.py +++ b/tests/local/test_playback.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import time import unittest diff --git a/tests/local/test_playlists.py b/tests/local/test_playlists.py index f054ffc9..4210f248 100644 --- a/tests/local/test_playlists.py +++ b/tests/local/test_playlists.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import shutil diff --git a/tests/local/test_tracklist.py b/tests/local/test_tracklist.py index 9c1d09d7..69dd6400 100644 --- a/tests/local/test_tracklist.py +++ b/tests/local/test_tracklist.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import random import unittest diff --git a/tests/local/test_translator.py b/tests/local/test_translator.py index b7ffd5cf..a473a0ff 100644 --- a/tests/local/test_translator.py +++ b/tests/local/test_translator.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import tempfile diff --git a/tests/mpd/__init__.py b/tests/mpd/__init__.py index baffc488..01e6d4f4 100644 --- a/tests/mpd/__init__.py +++ b/tests/mpd/__init__.py @@ -1 +1 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals diff --git a/tests/mpd/protocol/__init__.py b/tests/mpd/protocol/__init__.py index f4776f4f..813d91fe 100644 --- a/tests/mpd/protocol/__init__.py +++ b/tests/mpd/protocol/__init__.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/protocol/test_audio_output.py b/tests/mpd/protocol/test_audio_output.py index 643682ef..4815c2db 100644 --- a/tests/mpd/protocol/test_audio_output.py +++ b/tests/mpd/protocol/test_audio_output.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from tests.mpd import protocol diff --git a/tests/mpd/protocol/test_authentication.py b/tests/mpd/protocol/test_authentication.py index 4937c04f..6785ff98 100644 --- a/tests/mpd/protocol/test_authentication.py +++ b/tests/mpd/protocol/test_authentication.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from tests.mpd import protocol diff --git a/tests/mpd/protocol/test_channels.py b/tests/mpd/protocol/test_channels.py index be3b96a8..1c04974e 100644 --- a/tests/mpd/protocol/test_channels.py +++ b/tests/mpd/protocol/test_channels.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from tests.mpd import protocol diff --git a/tests/mpd/protocol/test_command_list.py b/tests/mpd/protocol/test_command_list.py index 9d66bd5d..330af176 100644 --- a/tests/mpd/protocol/test_command_list.py +++ b/tests/mpd/protocol/test_command_list.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from tests.mpd import protocol diff --git a/tests/mpd/protocol/test_connection.py b/tests/mpd/protocol/test_connection.py index 34cce6a0..2a21a1c3 100644 --- a/tests/mpd/protocol/test_connection.py +++ b/tests/mpd/protocol/test_connection.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mock import patch diff --git a/tests/mpd/protocol/test_current_playlist.py b/tests/mpd/protocol/test_current_playlist.py index e9898dd9..6501e5c7 100644 --- a/tests/mpd/protocol/test_current_playlist.py +++ b/tests/mpd/protocol/test_current_playlist.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.models import Ref, Track diff --git a/tests/mpd/protocol/test_idle.py b/tests/mpd/protocol/test_idle.py index cc937119..4c987647 100644 --- a/tests/mpd/protocol/test_idle.py +++ b/tests/mpd/protocol/test_idle.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mock import patch diff --git a/tests/mpd/protocol/test_music_db.py b/tests/mpd/protocol/test_music_db.py index ff39c081..3d8eefbf 100644 --- a/tests/mpd/protocol/test_music_db.py +++ b/tests/mpd/protocol/test_music_db.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/protocol/test_playback.py b/tests/mpd/protocol/test_playback.py index 67b4e787..d13cf65f 100644 --- a/tests/mpd/protocol/test_playback.py +++ b/tests/mpd/protocol/test_playback.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/protocol/test_reflection.py b/tests/mpd/protocol/test_reflection.py index 160c9876..e721d799 100644 --- a/tests/mpd/protocol/test_reflection.py +++ b/tests/mpd/protocol/test_reflection.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from tests.mpd import protocol diff --git a/tests/mpd/protocol/test_regression.py b/tests/mpd/protocol/test_regression.py index 3389573f..b0e9d450 100644 --- a/tests/mpd/protocol/test_regression.py +++ b/tests/mpd/protocol/test_regression.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import random diff --git a/tests/mpd/protocol/test_status.py b/tests/mpd/protocol/test_status.py index 7d30ea89..87e63a1a 100644 --- a/tests/mpd/protocol/test_status.py +++ b/tests/mpd/protocol/test_status.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.models import Track diff --git a/tests/mpd/protocol/test_stickers.py b/tests/mpd/protocol/test_stickers.py index c3ce264a..9eae1ac6 100644 --- a/tests/mpd/protocol/test_stickers.py +++ b/tests/mpd/protocol/test_stickers.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from tests.mpd import protocol diff --git a/tests/mpd/protocol/test_stored_playlists.py b/tests/mpd/protocol/test_stored_playlists.py index 4dc7dbbb..bc66387a 100644 --- a/tests/mpd/protocol/test_stored_playlists.py +++ b/tests/mpd/protocol/test_stored_playlists.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals from mopidy.models import Playlist, Track diff --git a/tests/mpd/test_commands.py b/tests/mpd/test_commands.py index 2b4205fe..4699dfe0 100644 --- a/tests/mpd/test_commands.py +++ b/tests/mpd/test_commands.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/test_dispatcher.py b/tests/mpd/test_dispatcher.py index cee4531a..24d03bf1 100644 --- a/tests/mpd/test_dispatcher.py +++ b/tests/mpd/test_dispatcher.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/test_exceptions.py b/tests/mpd/test_exceptions.py index 7f50c41b..a54f9e20 100644 --- a/tests/mpd/test_exceptions.py +++ b/tests/mpd/test_exceptions.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/test_status.py b/tests/mpd/test_status.py index 6a455136..57b2d4d4 100644 --- a/tests/mpd/test_status.py +++ b/tests/mpd/test_status.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/test_tokenizer.py b/tests/mpd/test_tokenizer.py index 01ecd17d..b4a1df09 100644 --- a/tests/mpd/test_tokenizer.py +++ b/tests/mpd/test_tokenizer.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/mpd/test_translator.py b/tests/mpd/test_translator.py index 2bd6cff6..b38a93e8 100644 --- a/tests/mpd/test_translator.py +++ b/tests/mpd/test_translator.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import datetime import unittest diff --git a/tests/test_commands.py b/tests/test_commands.py index 570647c2..58f681be 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import argparse import unittest diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index 19127aaa..fc19f60a 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/test_ext.py b/tests/test_ext.py index 428f3712..0e850e60 100644 --- a/tests/test_ext.py +++ b/tests/test_ext.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/test_help.py b/tests/test_help.py index 6499cac1..d8058cb7 100644 --- a/tests/test_help.py +++ b/tests/test_help.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import subprocess diff --git a/tests/test_mixer.py b/tests/test_mixer.py index 53c10292..d0f1b0f2 100644 --- a/tests/test_mixer.py +++ b/tests/test_mixer.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/test_models.py b/tests/test_models.py index 7838a6ba..ed1586da 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import json import unittest diff --git a/tests/test_version.py b/tests/test_version.py index 96063a1b..32b40fca 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest from distutils.version import StrictVersion as SV diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py index baffc488..01e6d4f4 100644 --- a/tests/utils/__init__.py +++ b/tests/utils/__init__.py @@ -1 +1 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals diff --git a/tests/utils/network/__init__.py b/tests/utils/network/__init__.py index baffc488..01e6d4f4 100644 --- a/tests/utils/network/__init__.py +++ b/tests/utils/network/__init__.py @@ -1 +1 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals diff --git a/tests/utils/network/test_connection.py b/tests/utils/network/test_connection.py index c3200689..031ea385 100644 --- a/tests/utils/network/test_connection.py +++ b/tests/utils/network/test_connection.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import errno import logging diff --git a/tests/utils/network/test_lineprotocol.py b/tests/utils/network/test_lineprotocol.py index 52d6901c..9fb703ca 100644 --- a/tests/utils/network/test_lineprotocol.py +++ b/tests/utils/network/test_lineprotocol.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import re import unittest diff --git a/tests/utils/network/test_server.py b/tests/utils/network/test_server.py index eebc9ea2..f5f61101 100644 --- a/tests/utils/network/test_server.py +++ b/tests/utils/network/test_server.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import errno import socket diff --git a/tests/utils/network/test_utils.py b/tests/utils/network/test_utils.py index d0886cfc..d5f558b4 100644 --- a/tests/utils/network/test_utils.py +++ b/tests/utils/network/test_utils.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import socket import unittest diff --git a/tests/utils/test_deps.py b/tests/utils/test_deps.py index 103f478c..3144fe30 100644 --- a/tests/utils/test_deps.py +++ b/tests/utils/test_deps.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import platform import unittest diff --git a/tests/utils/test_encoding.py b/tests/utils/test_encoding.py index 912f38c0..68634855 100644 --- a/tests/utils/test_encoding.py +++ b/tests/utils/test_encoding.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import unittest diff --git a/tests/utils/test_jsonrpc.py b/tests/utils/test_jsonrpc.py index 8f97f37e..bf7da541 100644 --- a/tests/utils/test_jsonrpc.py +++ b/tests/utils/test_jsonrpc.py @@ -1,4 +1,4 @@ -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import json import unittest diff --git a/tests/utils/test_path.py b/tests/utils/test_path.py index 8dafd951..4a31739c 100644 --- a/tests/utils/test_path.py +++ b/tests/utils/test_path.py @@ -1,6 +1,6 @@ # encoding: utf-8 -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os import shutil From 98ca748996fe462cedf284ad91a74bdd30eb81f3 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 19:36:23 +0100 Subject: [PATCH 02/13] py3: Use print function instead of print statement --- mopidy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy/__init__.py b/mopidy/__init__.py index 42da1ccd..18ecb22d 100644 --- a/mopidy/__init__.py +++ b/mopidy/__init__.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import platform import sys From b9a5192d5fab2d08bd0ab54ea9e81e6f48728ccd Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:08:01 +0100 Subject: [PATCH 03/13] py3: Add Python 2/3 compat module Keep all the hacks in a single place. This looks like all we need, so no need to depend on six. --- mopidy/utils/compat.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 mopidy/utils/compat.py diff --git a/mopidy/utils/compat.py b/mopidy/utils/compat.py new file mode 100644 index 00000000..d0e4aeb2 --- /dev/null +++ b/mopidy/utils/compat.py @@ -0,0 +1,24 @@ +import sys + +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 + +if PY2: + import ConfigParser as configparser # noqa + import Queue as queue # noqa + import thread # noqa + + string_types = basestring + text_type = unicode + + input = raw_input + +else: + import configparser # noqa + import queue # noqa + import _thread as thread # noqa + + string_types = (str,) + text_type = str + + input = input From 58527406c19974833796fb9af3299ee0d2c2c9b8 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:12:24 +0100 Subject: [PATCH 04/13] py3: Use compat.text_type instead of unicode --- mopidy/audio/utils.py | 4 +++- mopidy/config/__init__.py | 4 ++-- mopidy/config/keyring.py | 4 +++- mopidy/config/types.py | 8 ++++---- mopidy/core/tracklist.py | 3 ++- mopidy/local/translator.py | 5 +++-- mopidy/utils/encoding.py | 6 ++++-- mopidy/utils/jsonrpc.py | 8 +++++--- mopidy/utils/path.py | 6 ++++-- tests/__init__.py | 4 +++- tests/config/test_types.py | 5 +++-- tests/utils/network/test_lineprotocol.py | 6 +++--- tests/utils/test_path.py | 6 +++--- 13 files changed, 42 insertions(+), 27 deletions(-) diff --git a/mopidy/audio/utils.py b/mopidy/audio/utils.py index 0fcb2978..cb60af89 100644 --- a/mopidy/audio/utils.py +++ b/mopidy/audio/utils.py @@ -4,6 +4,8 @@ import pygst pygst.require('0.10') import gst # noqa +from mopidy.utils import compat + def calculate_duration(num_samples, sample_rate): """Determine duration of samples using GStreamer helper for precise @@ -18,7 +20,7 @@ def create_buffer(data, capabilites=None, timestamp=None, duration=None): """ buffer_ = gst.Buffer(data) if capabilites: - if isinstance(capabilites, basestring): + if isinstance(capabilites, compat.string_types): capabilites = gst.caps_from_string(capabilites) buffer_.set_caps(capabilites) if timestamp: diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index b9a27eb7..82c30b96 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -10,7 +10,7 @@ import re from mopidy.config import keyring from mopidy.config.schemas import * # noqa from mopidy.config.types import * # noqa -from mopidy.utils import path, versioning +from mopidy.utils import compat, path, versioning logger = logging.getLogger(__name__) @@ -108,7 +108,7 @@ def _load(files, defaults, overrides): # all in the same way? logger.info('Loading config from builtin defaults') for default in defaults: - if isinstance(default, unicode): + if isinstance(default, compat.text_type): default = default.encode('utf-8') parser.readfp(io.BytesIO(default)) diff --git a/mopidy/config/keyring.py b/mopidy/config/keyring.py index cce15bd9..d0c8d9ed 100644 --- a/mopidy/config/keyring.py +++ b/mopidy/config/keyring.py @@ -9,6 +9,8 @@ try: except ImportError: dbus = None +from mopidy.utils import compat + # XXX: Hack to workaround introspection bug caused by gnome-keyring, should be # fixed by version 3.5 per: @@ -92,7 +94,7 @@ def set(section, key, value): if not collection: return False - if isinstance(value, unicode): + if isinstance(value, compat.text_type): value = value.encode('utf-8') session = service.OpenSession('plain', EMPTY_STRING)[1] diff --git a/mopidy/config/types.py b/mopidy/config/types.py index ebca1a78..1dbbe39f 100644 --- a/mopidy/config/types.py +++ b/mopidy/config/types.py @@ -5,18 +5,18 @@ import re import socket from mopidy.config import validators -from mopidy.utils import path +from mopidy.utils import compat, path def decode(value): - if isinstance(value, unicode): + if isinstance(value, compat.text_type): return value # TODO: only unescape \n \t and \\? return value.decode('string-escape').decode('utf-8') def encode(value): - if not isinstance(value, unicode): + if not isinstance(value, compat.text_type): return value for char in ('\\', '\n', '\t'): # TODO: more escapes? value = value.replace(char, char.encode('unicode-escape')) @@ -278,7 +278,7 @@ class Path(ConfigValue): return ExpandedPath(value, expanded) def serialize(self, value, display=False): - if isinstance(value, unicode): + if isinstance(value, compat.text_type): raise ValueError('paths should always be bytes') if isinstance(value, ExpandedPath): return value.original diff --git a/mopidy/core/tracklist.py b/mopidy/core/tracklist.py index e3e90de5..d9c08c3d 100644 --- a/mopidy/core/tracklist.py +++ b/mopidy/core/tracklist.py @@ -6,6 +6,7 @@ import random from mopidy.core import listener from mopidy.models import TlTrack +from mopidy.utils import compat logger = logging.getLogger(__name__) @@ -329,7 +330,7 @@ class TracklistController(object): matches = self._tl_tracks for (key, values) in criteria.iteritems(): if (not isinstance(values, collections.Iterable) - or isinstance(values, basestring)): + or isinstance(values, compat.string_types)): # Fail hard if anyone is using the <0.17 calling style raise ValueError('Filter values must be iterable: %r' % values) if key == 'tlid': diff --git a/mopidy/local/translator.py b/mopidy/local/translator.py index 2bfe8ead..ca8b5e94 100644 --- a/mopidy/local/translator.py +++ b/mopidy/local/translator.py @@ -7,6 +7,7 @@ import urllib import urlparse from mopidy.models import Track +from mopidy.utils import compat from mopidy.utils.encoding import locale_decode from mopidy.utils.path import path_to_uri, uri_to_path @@ -29,14 +30,14 @@ def local_track_uri_to_path(uri, media_dir): def path_to_local_track_uri(relpath): """Convert path releative to media_dir to local track URI.""" - if isinstance(relpath, unicode): + if isinstance(relpath, compat.text_type): relpath = relpath.encode('utf-8') return b'local:track:%s' % urllib.quote(relpath) def path_to_local_directory_uri(relpath): """Convert path relative to :confval:`local/media_dir` directory URI.""" - if isinstance(relpath, unicode): + if isinstance(relpath, compat.text_type): relpath = relpath.encode('utf-8') return b'local:directory:%s' % urllib.quote(relpath) diff --git a/mopidy/utils/encoding.py b/mopidy/utils/encoding.py index af781838..be8d5a7f 100644 --- a/mopidy/utils/encoding.py +++ b/mopidy/utils/encoding.py @@ -2,9 +2,11 @@ from __future__ import absolute_import, unicode_literals import locale +from mopidy.utils import compat + def locale_decode(bytestr): try: - return unicode(bytestr) + return compat.text_type(bytestr) except UnicodeError: - return str(bytestr).decode(locale.getpreferredencoding()) + return bytes(bytestr).decode(locale.getpreferredencoding()) diff --git a/mopidy/utils/jsonrpc.py b/mopidy/utils/jsonrpc.py index 4eb85e9b..113edcab 100644 --- a/mopidy/utils/jsonrpc.py +++ b/mopidy/utils/jsonrpc.py @@ -6,6 +6,8 @@ import traceback import pykka +from mopidy.utils import compat + class JsonRpcWrapper(object): """ @@ -137,13 +139,13 @@ class JsonRpcWrapper(object): except TypeError as error: raise JsonRpcInvalidParamsError(data={ 'type': error.__class__.__name__, - 'message': unicode(error), + 'message': compat.text_type(error), 'traceback': traceback.format_exc(), }) except Exception as error: raise JsonRpcApplicationError(data={ 'type': error.__class__.__name__, - 'message': unicode(error), + 'message': compat.text_type(error), 'traceback': traceback.format_exc(), }) except JsonRpcError as error: @@ -164,7 +166,7 @@ class JsonRpcWrapper(object): if 'method' not in request: raise JsonRpcInvalidRequestError( data='"method" member must be included') - if not isinstance(request['method'], unicode): + if not isinstance(request['method'], compat.text_type): raise JsonRpcInvalidRequestError( data='"method" must be a string') diff --git a/mopidy/utils/path.py b/mopidy/utils/path.py index 4efcfa20..48e47735 100644 --- a/mopidy/utils/path.py +++ b/mopidy/utils/path.py @@ -11,6 +11,8 @@ import urlparse import glib +from mopidy.utils import compat + logger = logging.getLogger(__name__) @@ -64,7 +66,7 @@ def path_to_uri(path): Returns a file:// URI as an unicode string. """ - if isinstance(path, unicode): + if isinstance(path, compat.text_type): path = path.encode('utf-8') path = urllib.quote(path) return urlparse.urlunsplit((b'file', b'', path, b'', b'')) @@ -81,7 +83,7 @@ def uri_to_path(uri): look up the matching dir or file on your file system because the exact path would be lost by ignoring its encoding. """ - if isinstance(uri, unicode): + if isinstance(uri, compat.text_type): uri = uri.encode('utf-8') return urllib.unquote(urlparse.urlsplit(uri).path) diff --git a/tests/__init__.py b/tests/__init__.py index 6ae07bcc..c664a5fa 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -2,6 +2,8 @@ from __future__ import absolute_import, unicode_literals import os +from mopidy.utils import compat + def path_to_data_dir(name): if not isinstance(name, bytes): @@ -31,4 +33,4 @@ class IsA(object): any_int = IsA(int) any_str = IsA(str) -any_unicode = IsA(unicode) +any_unicode = IsA(compat.text_type) diff --git a/tests/config/test_types.py b/tests/config/test_types.py index 713eb4c0..f113fb28 100644 --- a/tests/config/test_types.py +++ b/tests/config/test_types.py @@ -9,6 +9,7 @@ import unittest import mock from mopidy.config import types +from mopidy.utils import compat # TODO: DecodeTest and EncodeTest @@ -48,7 +49,7 @@ class StringTest(unittest.TestCase): def test_deserialize_conversion_success(self): value = types.String() self.assertEqual('foo', value.deserialize(b' foo ')) - self.assertIsInstance(value.deserialize(b'foo'), unicode) + self.assertIsInstance(value.deserialize(b'foo'), compat.text_type) def test_deserialize_decodes_utf8(self): value = types.String() @@ -119,7 +120,7 @@ class SecretTest(unittest.TestCase): def test_deserialize_decodes_utf8(self): value = types.Secret() result = value.deserialize('æøå'.encode('utf-8')) - self.assertIsInstance(result, unicode) + self.assertIsInstance(result, compat.text_type) self.assertEqual('æøå', result) def test_deserialize_enforces_required(self): diff --git a/tests/utils/network/test_lineprotocol.py b/tests/utils/network/test_lineprotocol.py index 9fb703ca..5c6a5ad4 100644 --- a/tests/utils/network/test_lineprotocol.py +++ b/tests/utils/network/test_lineprotocol.py @@ -7,7 +7,7 @@ import unittest from mock import Mock, sentinel -from mopidy.utils import network +from mopidy.utils import compat, network from tests import any_unicode @@ -259,13 +259,13 @@ class LineProtocolTest(unittest.TestCase): def test_decode_plain_ascii(self): result = network.LineProtocol.decode(self.mock, 'abc') self.assertEqual('abc', result) - self.assertEqual(unicode, type(result)) + self.assertEqual(compat.text_type, type(result)) def test_decode_utf8(self): result = network.LineProtocol.decode( self.mock, 'æøå'.encode('utf-8')) self.assertEqual('æøå', result) - self.assertEqual(unicode, type(result)) + self.assertEqual(compat.text_type, type(result)) def test_decode_invalid_data(self): string = Mock() diff --git a/tests/utils/test_path.py b/tests/utils/test_path.py index 4a31739c..b15fd1b5 100644 --- a/tests/utils/test_path.py +++ b/tests/utils/test_path.py @@ -9,7 +9,7 @@ import unittest import glib -from mopidy.utils import path +from mopidy.utils import compat, path import tests @@ -57,7 +57,7 @@ class GetOrCreateDirTest(unittest.TestCase): def test_create_dir_with_unicode(self): with self.assertRaises(ValueError): - dir_path = unicode(os.path.join(self.parent, b'test')) + dir_path = compat.text_type(os.path.join(self.parent, b'test')) path.get_or_create_dir(dir_path) def test_create_dir_with_none(self): @@ -108,7 +108,7 @@ class GetOrCreateFileTest(unittest.TestCase): def test_create_dir_with_unicode(self): with self.assertRaises(ValueError): - file_path = unicode(os.path.join(self.parent, b'test')) + file_path = compat.text_type(os.path.join(self.parent, b'test')) path.get_or_create_file(file_path) def test_create_file_with_none(self): From 1d26c2d63c69be95cdb7fe0d420025015dc06321 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:13:30 +0100 Subject: [PATCH 05/13] py3: Use .item() and .values() As .iteritem() and .itervalues() doesn't exist in Python 3. --- mopidy/config/keyring.py | 4 ++-- mopidy/core/playlists.py | 2 +- mopidy/core/tracklist.py | 2 +- mopidy/local/json.py | 2 +- mopidy/local/search.py | 6 +++--- mopidy/utils/jsonrpc.py | 4 ++-- mopidy/utils/path.py | 2 +- mopidy/utils/process.py | 3 ++- 8 files changed, 13 insertions(+), 12 deletions(-) diff --git a/mopidy/config/keyring.py b/mopidy/config/keyring.py index d0c8d9ed..75fa8dcf 100644 --- a/mopidy/config/keyring.py +++ b/mopidy/config/keyring.py @@ -59,7 +59,7 @@ def fetch(): result = [] secrets = service.GetSecrets(items, session, byte_arrays=True) - for item_path, values in secrets.iteritems(): + for item_path, values in secrets.items(): session_path, parameters, value, content_type = values attrs = _item_attributes(bus, item_path) result.append((attrs['section'], attrs['key'], bytes(value))) @@ -163,7 +163,7 @@ def _prompt(bus, path): def _item_attributes(bus, path): item = _interface(bus, path, 'org.freedesktop.DBus.Properties') result = item.Get('org.freedesktop.Secret.Item', 'Attributes') - return dict((bytes(k), bytes(v)) for k, v in result.iteritems()) + return dict((bytes(k), bytes(v)) for k, v in result.items()) def _interface(bus, path, interface): diff --git a/mopidy/core/playlists.py b/mopidy/core/playlists.py index a6ab654f..c896bfa7 100644 --- a/mopidy/core/playlists.py +++ b/mopidy/core/playlists.py @@ -53,7 +53,7 @@ class PlaylistsController(object): backend = self.backends.with_playlists[uri_scheme] else: # TODO: this fallback looks suspicious - backend = self.backends.with_playlists.values()[0] + backend = list(self.backends.with_playlists.values())[0] playlist = backend.playlists.create(name).get() listener.CoreListener.send('playlist_changed', playlist=playlist) return playlist diff --git a/mopidy/core/tracklist.py b/mopidy/core/tracklist.py index d9c08c3d..816e570a 100644 --- a/mopidy/core/tracklist.py +++ b/mopidy/core/tracklist.py @@ -328,7 +328,7 @@ class TracklistController(object): """ criteria = criteria or kwargs matches = self._tl_tracks - for (key, values) in criteria.iteritems(): + for (key, values) in criteria.items(): if (not isinstance(values, collections.Iterable) or isinstance(values, compat.string_types)): # Fail hard if anyone is using the <0.17 calling style diff --git a/mopidy/local/json.py b/mopidy/local/json.py index 6ebe36b7..48bd373a 100644 --- a/mopidy/local/json.py +++ b/mopidy/local/json.py @@ -164,7 +164,7 @@ class JsonLibrary(local.Library): return search.search(tracks, query=query, uris=uris) def begin(self): - return self._tracks.itervalues() + return self._tracks.values() def add(self, track): self._tracks[track.uri] = track diff --git a/mopidy/local/search.py b/mopidy/local/search.py index 375c0daa..947902ed 100644 --- a/mopidy/local/search.py +++ b/mopidy/local/search.py @@ -11,7 +11,7 @@ def find_exact(tracks, query=None, uris=None): _validate_query(query) - for (field, values) in query.iteritems(): + for (field, values) in query.items(): if not hasattr(values, '__iter__'): values = [values] # FIXME this is bound to be slow for large libraries @@ -91,7 +91,7 @@ def search(tracks, query=None, uris=None): _validate_query(query) - for (field, values) in query.iteritems(): + for (field, values) in query.items(): if not hasattr(values, '__iter__'): values = [values] # FIXME this is bound to be slow for large libraries @@ -165,7 +165,7 @@ def search(tracks, query=None, uris=None): def _validate_query(query): - for (_, values) in query.iteritems(): + for (_, values) in query.items(): if not values: raise LookupError('Missing query') for value in values: diff --git a/mopidy/utils/jsonrpc.py b/mopidy/utils/jsonrpc.py index 113edcab..7990586b 100644 --- a/mopidy/utils/jsonrpc.py +++ b/mopidy/utils/jsonrpc.py @@ -322,12 +322,12 @@ class JsonRpcInspector(object): available properties and methods. """ methods = {} - for mount, obj in self.objects.iteritems(): + for mount, obj in self.objects.items(): if inspect.isroutine(obj): methods[mount] = self._describe_method(obj) else: obj_methods = self._get_methods(obj) - for name, description in obj_methods.iteritems(): + for name, description in obj_methods.items(): if mount: name = '%s.%s' % (mount, name) methods[name] = description diff --git a/mopidy/utils/path.py b/mopidy/utils/path.py index 48e47735..de03247c 100644 --- a/mopidy/utils/path.py +++ b/mopidy/utils/path.py @@ -198,7 +198,7 @@ def _find(root, thread_count=10, relative=False, follow=False): def find_mtimes(root, follow=False): results, errors = _find(root, relative=False, follow=follow) - mtimes = dict((f, int(st.st_mtime)) for f, st in results.iteritems()) + mtimes = dict((f, int(st.st_mtime)) for f, st in results.items()) return mtimes, errors diff --git a/mopidy/utils/process.py b/mopidy/utils/process.py index cf9cbd0a..c86deb12 100644 --- a/mopidy/utils/process.py +++ b/mopidy/utils/process.py @@ -13,8 +13,9 @@ from pykka.registry import ActorRegistry logger = logging.getLogger(__name__) + SIGNALS = dict( - (k, v) for v, k in signal.__dict__.iteritems() + (k, v) for v, k in signal.__dict__.items() if v.startswith('SIG') and not v.startswith('SIG_')) From 95df66865e9e63e1cfe6abfebecad4a01925f4a5 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:14:53 +0100 Subject: [PATCH 06/13] py3: Use list comprehensions instead of filter() This is just a stylistic change, and is not strictly required for Python 3 compat. --- mopidy/backend/dummy.py | 2 +- mopidy/core/tracklist.py | 6 +++--- mopidy/mpd/translator.py | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mopidy/backend/dummy.py b/mopidy/backend/dummy.py index 529124c4..dfddf5ae 100644 --- a/mopidy/backend/dummy.py +++ b/mopidy/backend/dummy.py @@ -44,7 +44,7 @@ class DummyLibraryProvider(backend.LibraryProvider): return self.dummy_find_exact_result def lookup(self, uri): - return filter(lambda t: uri == t.uri, self.dummy_library) + return [t for t in self.dummy_library if uri == t.uri] def refresh(self, uri=None): pass diff --git a/mopidy/core/tracklist.py b/mopidy/core/tracklist.py index 816e570a..65c04e05 100644 --- a/mopidy/core/tracklist.py +++ b/mopidy/core/tracklist.py @@ -334,10 +334,10 @@ class TracklistController(object): # Fail hard if anyone is using the <0.17 calling style raise ValueError('Filter values must be iterable: %r' % values) if key == 'tlid': - matches = filter(lambda ct: ct.tlid in values, matches) + matches = [ct for ct in matches if ct.tlid in values] else: - matches = filter( - lambda ct: getattr(ct.track, key) in values, matches) + matches = [ + ct for ct in matches if getattr(ct.track, key) in values] return matches def move(self, start, end, to_position): diff --git a/mopidy/mpd/translator.py b/mopidy/mpd/translator.py index 5c37977c..ec3a270b 100644 --- a/mopidy/mpd/translator.py +++ b/mopidy/mpd/translator.py @@ -59,13 +59,13 @@ def track_to_mpd_format(track, position=None): if track.album is not None and track.album.artists: artists = artists_to_mpd_format(track.album.artists) result.append(('AlbumArtist', artists)) - artists = filter( - lambda a: a.musicbrainz_id is not None, track.album.artists) + artists = [ + a for a in track.album.artists if a.musicbrainz_id is not None] if artists: result.append( ('MUSICBRAINZ_ALBUMARTISTID', artists[0].musicbrainz_id)) if track.artists: - artists = filter(lambda a: a.musicbrainz_id is not None, track.artists) + artists = [a for a in track.artists if a.musicbrainz_id is not None] if artists: result.append(('MUSICBRAINZ_ARTISTID', artists[0].musicbrainz_id)) From 01c7f12976c3bc2215e88d9e1efa1a30f2bdf3a6 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:15:48 +0100 Subject: [PATCH 07/13] py3: Import moved modules via compat --- mopidy/audio/playlists.py | 3 ++- mopidy/config/__init__.py | 2 +- mopidy/utils/path.py | 2 +- mopidy/utils/process.py | 7 +++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mopidy/audio/playlists.py b/mopidy/audio/playlists.py index e091d8ff..a7ec7791 100644 --- a/mopidy/audio/playlists.py +++ b/mopidy/audio/playlists.py @@ -1,6 +1,5 @@ from __future__ import absolute_import, unicode_literals -import ConfigParser as configparser import io import gobject @@ -9,6 +8,8 @@ import pygst pygst.require('0.10') import gst # noqa +from mopidy.utils.compat import configparser + try: import xml.etree.cElementTree as elementtree except ImportError: diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index 82c30b96..e41269c9 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -1,6 +1,5 @@ from __future__ import absolute_import, unicode_literals -import ConfigParser as configparser import io import itertools import logging @@ -11,6 +10,7 @@ from mopidy.config import keyring from mopidy.config.schemas import * # noqa from mopidy.config.types import * # noqa from mopidy.utils import compat, path, versioning +from mopidy.utils.compat import configparser logger = logging.getLogger(__name__) diff --git a/mopidy/utils/path.py b/mopidy/utils/path.py index de03247c..9e5df36a 100644 --- a/mopidy/utils/path.py +++ b/mopidy/utils/path.py @@ -1,6 +1,5 @@ from __future__ import absolute_import, unicode_literals -import Queue as queue import logging import os import stat @@ -12,6 +11,7 @@ import urlparse import glib from mopidy.utils import compat +from mopidy.utils.compat import queue logger = logging.getLogger(__name__) diff --git a/mopidy/utils/process.py b/mopidy/utils/process.py index c86deb12..02c60ef8 100644 --- a/mopidy/utils/process.py +++ b/mopidy/utils/process.py @@ -2,15 +2,14 @@ from __future__ import absolute_import, unicode_literals import logging import signal -try: - import _thread as thread # Python 3 -except ImportError: - import thread # Python 2 import threading from pykka import ActorDeadError from pykka.registry import ActorRegistry +from mopidy.utils.compat import thread + + logger = logging.getLogger(__name__) From 7124226fc7d67ea12bde626a433c60d273e192c6 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:16:12 +0100 Subject: [PATCH 08/13] py3: Use renamed function via compat --- mopidy/local/commands.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mopidy/local/commands.py b/mopidy/local/commands.py index cfea7ef9..702626f2 100644 --- a/mopidy/local/commands.py +++ b/mopidy/local/commands.py @@ -7,7 +7,7 @@ import time from mopidy import commands, exceptions from mopidy.audio import scan from mopidy.local import translator -from mopidy.utils import path +from mopidy.utils import compat, path logger = logging.getLogger(__name__) @@ -39,7 +39,7 @@ class ClearCommand(commands.Command): library = _get_library(args, config) prompt = '\nAre you sure you want to clear the library? [y/N] ' - if raw_input(prompt).lower() != 'y': + if compat.input(prompt).lower() != 'y': print('Clearing library aborted.') return 0 From e35a066d5e9380acc8dea71efcaedd80acd19c98 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:25:51 +0100 Subject: [PATCH 09/13] py3: Use explicit float or integer division --- mopidy/audio/scan.py | 4 ++-- mopidy/local/commands.py | 5 +++-- mopidy/local/playlists.py | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mopidy/audio/scan.py b/mopidy/audio/scan.py index b3fe2c4d..55ad6426 100644 --- a/mopidy/audio/scan.py +++ b/mopidy/audio/scan.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import, unicode_literals +from __future__ import absolute_import, division, unicode_literals import datetime import os @@ -81,7 +81,7 @@ class Scanner(object): def _collect(self): """Polls for messages to collect data.""" start = time.time() - timeout_s = self._timeout_ms / float(1000) + timeout_s = self._timeout_ms / 1000. tags = {} while time.time() - start < timeout_s: diff --git a/mopidy/local/commands.py b/mopidy/local/commands.py index 702626f2..5dacca32 100644 --- a/mopidy/local/commands.py +++ b/mopidy/local/commands.py @@ -1,4 +1,5 @@ -from __future__ import absolute_import, print_function, unicode_literals +from __future__ import ( + absolute_import, division, print_function, unicode_literals) import logging import os @@ -163,6 +164,6 @@ class _Progress(object): logger.info('Scanned %d of %d files in %ds.', self.count, self.total, duration) else: - remainder = duration / self.count * (self.total - self.count) + remainder = duration // self.count * (self.total - self.count) logger.info('Scanned %d of %d files in %ds, ~%ds left.', self.count, self.total, duration, remainder) diff --git a/mopidy/local/playlists.py b/mopidy/local/playlists.py index 1496867c..deeae2b5 100644 --- a/mopidy/local/playlists.py +++ b/mopidy/local/playlists.py @@ -1,4 +1,4 @@ -from __future__ import absolute_import, unicode_literals +from __future__ import absolute_import, division, unicode_literals import glob import logging @@ -92,7 +92,7 @@ class LocalPlaylistsProvider(backend.PlaylistsProvider): def _write_m3u_extinf(self, file_handle, track): title = track.name.encode('latin-1', 'replace') - runtime = track.length / 1000 if track.length else -1 + runtime = track.length // 1000 if track.length else -1 file_handle.write('#EXTINF:' + str(runtime) + ',' + title + '\n') def _save_m3u(self, playlist): From 7a1bb224f73c4107bc1532577d44fd8d46f09ffc Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:26:07 +0100 Subject: [PATCH 10/13] py3: Avoid indexing exception objects It doesn't work on Python 3. --- tests/mpd/test_exceptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/mpd/test_exceptions.py b/tests/mpd/test_exceptions.py index a54f9e20..d055ef7e 100644 --- a/tests/mpd/test_exceptions.py +++ b/tests/mpd/test_exceptions.py @@ -13,7 +13,7 @@ class MpdExceptionsTest(unittest.TestCase): try: raise KeyError('Track X not found') except KeyError as e: - raise MpdAckError(e[0]) + raise MpdAckError(e.message) except MpdAckError as e: self.assertEqual(e.message, 'Track X not found') From 57cdab586a7adcc4579b83677658889bedce13e8 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 20:39:39 +0100 Subject: [PATCH 11/13] Fix flake8 warnings --- mopidy/__main__.py | 2 +- mopidy/commands.py | 2 +- mopidy/mpd/protocol/stored_playlists.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 1aa85c07..96e10e18 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -1,4 +1,4 @@ -from __future__ import print_function, absolute_import, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import logging import os diff --git a/mopidy/commands.py b/mopidy/commands.py index 16c606c8..4b00a685 100644 --- a/mopidy/commands.py +++ b/mopidy/commands.py @@ -1,4 +1,4 @@ -from __future__ import print_function, absolute_import, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import argparse import collections diff --git a/mopidy/mpd/protocol/stored_playlists.py b/mopidy/mpd/protocol/stored_playlists.py index fcfc69ce..f273e9b9 100644 --- a/mopidy/mpd/protocol/stored_playlists.py +++ b/mopidy/mpd/protocol/stored_playlists.py @@ -1,4 +1,4 @@ -from __future__ import division, absolute_import, unicode_literals +from __future__ import absolute_import, division, unicode_literals import datetime From 4f428b86019d0ba2d013405248c0a6fa0cd45c80 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 21:36:15 +0100 Subject: [PATCH 12/13] py3: Move compat module out of utils --- mopidy/audio/playlists.py | 2 +- mopidy/audio/utils.py | 2 +- mopidy/{utils => }/compat.py | 0 mopidy/config/__init__.py | 5 +++-- mopidy/config/keyring.py | 2 +- mopidy/config/types.py | 3 ++- mopidy/core/tracklist.py | 2 +- mopidy/local/commands.py | 4 ++-- mopidy/local/translator.py | 2 +- mopidy/utils/encoding.py | 2 +- mopidy/utils/jsonrpc.py | 2 +- mopidy/utils/path.py | 4 ++-- mopidy/utils/process.py | 2 +- tests/__init__.py | 2 +- tests/config/test_types.py | 2 +- tests/utils/network/test_lineprotocol.py | 3 ++- tests/utils/test_path.py | 3 ++- 17 files changed, 23 insertions(+), 19 deletions(-) rename mopidy/{utils => }/compat.py (100%) diff --git a/mopidy/audio/playlists.py b/mopidy/audio/playlists.py index a7ec7791..5688db4b 100644 --- a/mopidy/audio/playlists.py +++ b/mopidy/audio/playlists.py @@ -8,7 +8,7 @@ import pygst pygst.require('0.10') import gst # noqa -from mopidy.utils.compat import configparser +from mopidy.compat import configparser try: import xml.etree.cElementTree as elementtree diff --git a/mopidy/audio/utils.py b/mopidy/audio/utils.py index cb60af89..a94e4551 100644 --- a/mopidy/audio/utils.py +++ b/mopidy/audio/utils.py @@ -4,7 +4,7 @@ import pygst pygst.require('0.10') import gst # noqa -from mopidy.utils import compat +from mopidy import compat def calculate_duration(num_samples, sample_rate): diff --git a/mopidy/utils/compat.py b/mopidy/compat.py similarity index 100% rename from mopidy/utils/compat.py rename to mopidy/compat.py diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index e41269c9..6edca51c 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -6,11 +6,12 @@ import logging import os.path import re +from mopidy import compat +from mopidy.compat import configparser from mopidy.config import keyring from mopidy.config.schemas import * # noqa from mopidy.config.types import * # noqa -from mopidy.utils import compat, path, versioning -from mopidy.utils.compat import configparser +from mopidy.utils import path, versioning logger = logging.getLogger(__name__) diff --git a/mopidy/config/keyring.py b/mopidy/config/keyring.py index 75fa8dcf..fb6eded3 100644 --- a/mopidy/config/keyring.py +++ b/mopidy/config/keyring.py @@ -9,7 +9,7 @@ try: except ImportError: dbus = None -from mopidy.utils import compat +from mopidy import compat # XXX: Hack to workaround introspection bug caused by gnome-keyring, should be diff --git a/mopidy/config/types.py b/mopidy/config/types.py index 1dbbe39f..cd3905ac 100644 --- a/mopidy/config/types.py +++ b/mopidy/config/types.py @@ -4,8 +4,9 @@ import logging import re import socket +from mopidy import compat from mopidy.config import validators -from mopidy.utils import compat, path +from mopidy.utils import path def decode(value): diff --git a/mopidy/core/tracklist.py b/mopidy/core/tracklist.py index 65c04e05..4b378a02 100644 --- a/mopidy/core/tracklist.py +++ b/mopidy/core/tracklist.py @@ -4,9 +4,9 @@ import collections import logging import random +from mopidy import compat from mopidy.core import listener from mopidy.models import TlTrack -from mopidy.utils import compat logger = logging.getLogger(__name__) diff --git a/mopidy/local/commands.py b/mopidy/local/commands.py index 5dacca32..0110a6dd 100644 --- a/mopidy/local/commands.py +++ b/mopidy/local/commands.py @@ -5,10 +5,10 @@ import logging import os import time -from mopidy import commands, exceptions +from mopidy import commands, compat, exceptions from mopidy.audio import scan from mopidy.local import translator -from mopidy.utils import compat, path +from mopidy.utils import path logger = logging.getLogger(__name__) diff --git a/mopidy/local/translator.py b/mopidy/local/translator.py index ca8b5e94..7d7f0601 100644 --- a/mopidy/local/translator.py +++ b/mopidy/local/translator.py @@ -6,8 +6,8 @@ import re import urllib import urlparse +from mopidy import compat from mopidy.models import Track -from mopidy.utils import compat from mopidy.utils.encoding import locale_decode from mopidy.utils.path import path_to_uri, uri_to_path diff --git a/mopidy/utils/encoding.py b/mopidy/utils/encoding.py index be8d5a7f..27506816 100644 --- a/mopidy/utils/encoding.py +++ b/mopidy/utils/encoding.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals import locale -from mopidy.utils import compat +from mopidy import compat def locale_decode(bytestr): diff --git a/mopidy/utils/jsonrpc.py b/mopidy/utils/jsonrpc.py index 7990586b..13199b26 100644 --- a/mopidy/utils/jsonrpc.py +++ b/mopidy/utils/jsonrpc.py @@ -6,7 +6,7 @@ import traceback import pykka -from mopidy.utils import compat +from mopidy import compat class JsonRpcWrapper(object): diff --git a/mopidy/utils/path.py b/mopidy/utils/path.py index 9e5df36a..54f480b4 100644 --- a/mopidy/utils/path.py +++ b/mopidy/utils/path.py @@ -10,8 +10,8 @@ import urlparse import glib -from mopidy.utils import compat -from mopidy.utils.compat import queue +from mopidy import compat +from mopidy.compat import queue logger = logging.getLogger(__name__) diff --git a/mopidy/utils/process.py b/mopidy/utils/process.py index 02c60ef8..5b2bb9c0 100644 --- a/mopidy/utils/process.py +++ b/mopidy/utils/process.py @@ -7,7 +7,7 @@ import threading from pykka import ActorDeadError from pykka.registry import ActorRegistry -from mopidy.utils.compat import thread +from mopidy.compat import thread logger = logging.getLogger(__name__) diff --git a/tests/__init__.py b/tests/__init__.py index c664a5fa..82759578 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals import os -from mopidy.utils import compat +from mopidy import compat def path_to_data_dir(name): diff --git a/tests/config/test_types.py b/tests/config/test_types.py index f113fb28..939d028b 100644 --- a/tests/config/test_types.py +++ b/tests/config/test_types.py @@ -8,8 +8,8 @@ import unittest import mock +from mopidy import compat from mopidy.config import types -from mopidy.utils import compat # TODO: DecodeTest and EncodeTest diff --git a/tests/utils/network/test_lineprotocol.py b/tests/utils/network/test_lineprotocol.py index 5c6a5ad4..28bfbad2 100644 --- a/tests/utils/network/test_lineprotocol.py +++ b/tests/utils/network/test_lineprotocol.py @@ -7,7 +7,8 @@ import unittest from mock import Mock, sentinel -from mopidy.utils import compat, network +from mopidy import compat +from mopidy.utils import network from tests import any_unicode diff --git a/tests/utils/test_path.py b/tests/utils/test_path.py index b15fd1b5..d82bcbe6 100644 --- a/tests/utils/test_path.py +++ b/tests/utils/test_path.py @@ -9,7 +9,8 @@ import unittest import glib -from mopidy.utils import compat, path +from mopidy import compat +from mopidy.utils import path import tests From 7acf62723afd5ef1ed403797605851edd5c9e4c4 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Sun, 7 Dec 2014 21:44:35 +0100 Subject: [PATCH 13/13] py3: Use itervalues() for local track database --- mopidy/compat.py | 6 ++++++ mopidy/local/json.py | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mopidy/compat.py b/mopidy/compat.py index d0e4aeb2..b563f735 100644 --- a/mopidy/compat.py +++ b/mopidy/compat.py @@ -13,6 +13,9 @@ if PY2: input = raw_input + def itervalues(dct, **kwargs): + return iter(dct.itervalues(**kwargs)) + else: import configparser # noqa import queue # noqa @@ -22,3 +25,6 @@ else: text_type = str input = input + + def itervalues(dct, **kwargs): + return iter(dct.values(**kwargs)) diff --git a/mopidy/local/json.py b/mopidy/local/json.py index 48bd373a..70dc68c4 100644 --- a/mopidy/local/json.py +++ b/mopidy/local/json.py @@ -11,7 +11,7 @@ import tempfile import time import mopidy -from mopidy import local, models +from mopidy import compat, local, models from mopidy.local import search, storage, translator from mopidy.utils import encoding @@ -164,7 +164,7 @@ class JsonLibrary(local.Library): return search.search(tracks, query=query, uris=uris) def begin(self): - return self._tracks.values() + return compat.itervalues(self._tracks) def add(self, track): self._tracks[track.uri] = track