From 0b25a6f11f2b848e3364742a3f1acaef483c99ae Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Mon, 12 Nov 2012 21:40:14 +0100 Subject: [PATCH] Extend the backends API to support optional providers --- mopidy/backends/base.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/mopidy/backends/base.py b/mopidy/backends/base.py index de33e6e5..4eecd242 100644 --- a/mopidy/backends/base.py +++ b/mopidy/backends/base.py @@ -9,20 +9,36 @@ class Backend(object): audio = None #: The library provider. An instance of - # :class:`mopidy.backends.base.BaseLibraryProvider`. + #: :class:`mopidy.backends.base.BaseLibraryProvider`, or :class:`None` if + #: the backend doesn't provide a library. library = None #: The playback provider. An instance of - #: :class:`mopidy.backends.base.BasePlaybackProvider`. + #: :class:`mopidy.backends.base.BasePlaybackProvider`, or :class:`None` if + #: the backend doesn't provide playback. playback = None #: The stored playlists provider. An instance of - #: :class:`mopidy.backends.base.BaseStoredPlaylistsProvider`. + #: :class:`mopidy.backends.base.BaseStoredPlaylistsProvider`, or + #: class:`None` if the backend doesn't provide stored playlists. stored_playlists = None #: List of URI schemes this backend can handle. uri_schemes = [] + # Because the providers is marked as pykka_traversible, we can't get() them + # from another actor, and need helper methods to check if the providers are + # set or None. + + def has_library(self): + return self.library is not None + + def has_playback(self): + return self.playback is not None + + def has_stored_playlists(self): + return self.stored_playlists is not None + class BaseLibraryProvider(object): """