diff --git a/mopidy/backends/spotify/__init__.py b/mopidy/backends/spotify/__init__.py
index 749a43c0..87d76c46 100644
--- a/mopidy/backends/spotify/__init__.py
+++ b/mopidy/backends/spotify/__init__.py
@@ -1,70 +1,2 @@
-import logging
-
-from pykka.actor import ThreadingActor
-
-from mopidy import settings
-from mopidy.backends import base
-
-logger = logging.getLogger('mopidy.backends.spotify')
-
-BITRATES = {96: 2, 160: 0, 320: 1}
-
-
-class SpotifyBackend(ThreadingActor, base.Backend):
- """
- A backend for playing music from the `Spotify `_
- music streaming service. The backend uses the official `libspotify
- `_ library and the
- `pyspotify `_ Python bindings for
- libspotify.
-
- .. note::
-
- This product uses SPOTIFY(R) CORE but is not endorsed, certified or
- otherwise approved in any way by Spotify. Spotify is the registered
- trade mark of the Spotify Group.
-
- **Issues:**
- https://github.com/mopidy/mopidy/issues?labels=backend-spotify
-
- **Dependencies:**
-
- - libspotify >= 10, < 11 (libspotify10 package from apt.mopidy.com)
- - pyspotify >= 1.5 (python-spotify package from apt.mopidy.com)
-
- **Settings:**
-
- - :attr:`mopidy.settings.SPOTIFY_CACHE_PATH`
- - :attr:`mopidy.settings.SPOTIFY_USERNAME`
- - :attr:`mopidy.settings.SPOTIFY_PASSWORD`
- """
-
- # Imports inside methods are to prevent loading of __init__.py to fail on
- # missing spotify dependencies.
-
- def __init__(self, audio):
- from .library import SpotifyLibraryProvider
- from .playback import SpotifyPlaybackProvider
- from .session_manager import SpotifySessionManager
- from .stored_playlists import SpotifyStoredPlaylistsProvider
-
- self.library = SpotifyLibraryProvider(backend=self)
- self.playback = SpotifyPlaybackProvider(audio=audio, backend=self)
- self.stored_playlists = SpotifyStoredPlaylistsProvider(backend=self)
-
- self.uri_schemes = [u'spotify']
-
- # Fail early if settings are not present
- username = settings.SPOTIFY_USERNAME
- password = settings.SPOTIFY_PASSWORD
-
- self.spotify = SpotifySessionManager(
- username, password, audio=audio, backend_ref=self.actor_ref)
-
- def on_start(self):
- logger.info(u'Mopidy uses SPOTIFY(R) CORE')
- logger.debug(u'Connecting to Spotify')
- self.spotify.start()
-
- def on_stop(self):
- self.spotify.logout()
+# flake8: noqa
+from .actor import SpotifyBackend
diff --git a/mopidy/backends/spotify/actor.py b/mopidy/backends/spotify/actor.py
new file mode 100644
index 00000000..186f5729
--- /dev/null
+++ b/mopidy/backends/spotify/actor.py
@@ -0,0 +1,68 @@
+import logging
+
+from pykka.actor import ThreadingActor
+
+from mopidy import settings
+from mopidy.backends import base
+
+logger = logging.getLogger('mopidy.backends.spotify')
+
+
+class SpotifyBackend(ThreadingActor, base.Backend):
+ """
+ A backend for playing music from the `Spotify `_
+ music streaming service. The backend uses the official `libspotify
+ `_ library and the
+ `pyspotify `_ Python bindings for
+ libspotify.
+
+ .. note::
+
+ This product uses SPOTIFY(R) CORE but is not endorsed, certified or
+ otherwise approved in any way by Spotify. Spotify is the registered
+ trade mark of the Spotify Group.
+
+ **Issues:**
+ https://github.com/mopidy/mopidy/issues?labels=backend-spotify
+
+ **Dependencies:**
+
+ - libspotify >= 10, < 11 (libspotify10 package from apt.mopidy.com)
+ - pyspotify >= 1.5 (python-spotify package from apt.mopidy.com)
+
+ **Settings:**
+
+ - :attr:`mopidy.settings.SPOTIFY_CACHE_PATH`
+ - :attr:`mopidy.settings.SPOTIFY_USERNAME`
+ - :attr:`mopidy.settings.SPOTIFY_PASSWORD`
+ """
+
+ # Imports inside methods are to prevent loading of __init__.py to fail on
+ # missing spotify dependencies.
+
+ def __init__(self, audio):
+ from .library import SpotifyLibraryProvider
+ from .playback import SpotifyPlaybackProvider
+ from .session_manager import SpotifySessionManager
+ from .stored_playlists import SpotifyStoredPlaylistsProvider
+
+ self.library = SpotifyLibraryProvider(backend=self)
+ self.playback = SpotifyPlaybackProvider(audio=audio, backend=self)
+ self.stored_playlists = SpotifyStoredPlaylistsProvider(backend=self)
+
+ self.uri_schemes = [u'spotify']
+
+ # Fail early if settings are not present
+ username = settings.SPOTIFY_USERNAME
+ password = settings.SPOTIFY_PASSWORD
+
+ self.spotify = SpotifySessionManager(
+ username, password, audio=audio, backend_ref=self.actor_ref)
+
+ def on_start(self):
+ logger.info(u'Mopidy uses SPOTIFY(R) CORE')
+ logger.debug(u'Connecting to Spotify')
+ self.spotify.start()
+
+ def on_stop(self):
+ self.spotify.logout()
diff --git a/mopidy/backends/spotify/container_manager.py b/mopidy/backends/spotify/container_manager.py
index a45b1adc..e3388e0b 100644
--- a/mopidy/backends/spotify/container_manager.py
+++ b/mopidy/backends/spotify/container_manager.py
@@ -3,7 +3,7 @@ import logging
from spotify.manager import SpotifyContainerManager as \
PyspotifyContainerManager
-logger = logging.getLogger('mopidy.backends.spotify.container_manager')
+logger = logging.getLogger('mopidy.backends.spotify')
class SpotifyContainerManager(PyspotifyContainerManager):
diff --git a/mopidy/backends/spotify/library.py b/mopidy/backends/spotify/library.py
index b254519e..e237a04a 100644
--- a/mopidy/backends/spotify/library.py
+++ b/mopidy/backends/spotify/library.py
@@ -3,11 +3,12 @@ import Queue
from spotify import Link, SpotifyError
-from mopidy.backends.base import BaseLibraryProvider
-from mopidy.backends.spotify.translator import SpotifyTranslator
+from mopidy.backends import base
from mopidy.models import Track, Playlist
-logger = logging.getLogger('mopidy.backends.spotify.library')
+from .translator import SpotifyTranslator
+
+logger = logging.getLogger('mopidy.backends.spotify')
class SpotifyTrack(Track):
@@ -49,7 +50,7 @@ class SpotifyTrack(Track):
return self._proxy.copy(**values)
-class SpotifyLibraryProvider(BaseLibraryProvider):
+class SpotifyLibraryProvider(base.BaseLibraryProvider):
def find_exact(self, **query):
return self.search(**query)
diff --git a/mopidy/backends/spotify/playback.py b/mopidy/backends/spotify/playback.py
index d3d0cfa9..40868745 100644
--- a/mopidy/backends/spotify/playback.py
+++ b/mopidy/backends/spotify/playback.py
@@ -3,14 +3,14 @@ import time
from spotify import Link, SpotifyError
-from mopidy.backends.base import BasePlaybackProvider
+from mopidy.backends import base
from mopidy.core import PlaybackState
-logger = logging.getLogger('mopidy.backends.spotify.playback')
+logger = logging.getLogger('mopidy.backends.spotify')
-class SpotifyPlaybackProvider(BasePlaybackProvider):
+class SpotifyPlaybackProvider(base.BasePlaybackProvider):
def __init__(self, *args, **kwargs):
super(SpotifyPlaybackProvider, self).__init__(*args, **kwargs)
diff --git a/mopidy/backends/spotify/playlist_manager.py b/mopidy/backends/spotify/playlist_manager.py
index e1308a49..645a574c 100644
--- a/mopidy/backends/spotify/playlist_manager.py
+++ b/mopidy/backends/spotify/playlist_manager.py
@@ -3,7 +3,7 @@ import logging
from spotify.manager import SpotifyPlaylistManager as PyspotifyPlaylistManager
-logger = logging.getLogger('mopidy.backends.spotify.playlist_manager')
+logger = logging.getLogger('mopidy.backends.spotify')
class SpotifyPlaylistManager(PyspotifyPlaylistManager):
diff --git a/mopidy/backends/spotify/session_manager.py b/mopidy/backends/spotify/session_manager.py
index caa777e1..983f3861 100644
--- a/mopidy/backends/spotify/session_manager.py
+++ b/mopidy/backends/spotify/session_manager.py
@@ -5,14 +5,16 @@ import threading
from spotify.manager import SpotifySessionManager as PyspotifySessionManager
from mopidy import settings
-from mopidy.backends.spotify import BITRATES
-from mopidy.backends.spotify.container_manager import SpotifyContainerManager
-from mopidy.backends.spotify.playlist_manager import SpotifyPlaylistManager
-from mopidy.backends.spotify.translator import SpotifyTranslator
from mopidy.models import Playlist
from mopidy.utils import process, versioning
-logger = logging.getLogger('mopidy.backends.spotify.session_manager')
+from .container_manager import SpotifyContainerManager
+from .playlist_manager import SpotifyPlaylistManager
+from .translator import SpotifyTranslator
+
+logger = logging.getLogger('mopidy.backends.spotify')
+
+BITRATES = {96: 2, 160: 0, 320: 1}
# pylint: disable = R0901
# SpotifySessionManager: Too many ancestors (9/7)
diff --git a/mopidy/backends/spotify/stored_playlists.py b/mopidy/backends/spotify/stored_playlists.py
index 85695c40..9a2328c4 100644
--- a/mopidy/backends/spotify/stored_playlists.py
+++ b/mopidy/backends/spotify/stored_playlists.py
@@ -1,7 +1,7 @@
-from mopidy.backends.base import BaseStoredPlaylistsProvider
+from mopidy.backends import base
-class SpotifyStoredPlaylistsProvider(BaseStoredPlaylistsProvider):
+class SpotifyStoredPlaylistsProvider(base.BaseStoredPlaylistsProvider):
def create(self, name):
pass # TODO
diff --git a/mopidy/backends/spotify/translator.py b/mopidy/backends/spotify/translator.py
index 82c11ef7..104029f5 100644
--- a/mopidy/backends/spotify/translator.py
+++ b/mopidy/backends/spotify/translator.py
@@ -5,7 +5,7 @@ from spotify import Link, SpotifyError
from mopidy import settings
from mopidy.models import Artist, Album, Track, Playlist
-logger = logging.getLogger('mopidy.backends.spotify.translator')
+logger = logging.getLogger('mopidy.backends.spotify')
class SpotifyTranslator(object):