diff --git a/mopidy/backends/base.py b/mopidy/backends/base.py index f49aa89b..f7871d44 100644 --- a/mopidy/backends/base.py +++ b/mopidy/backends/base.py @@ -53,7 +53,7 @@ class BaseLibraryProvider(object): def __init__(self, backend): self.backend = backend - def find_exact(self, **query): + def find_exact(self, query=None): """ See :meth:`mopidy.core.LibraryController.find_exact`. @@ -77,7 +77,7 @@ class BaseLibraryProvider(object): """ pass - def search(self, **query): + def search(self, query=None): """ See :meth:`mopidy.core.LibraryController.search`. diff --git a/mopidy/backends/local/library.py b/mopidy/backends/local/library.py index eb328ce2..ebdd6f9d 100644 --- a/mopidy/backends/local/library.py +++ b/mopidy/backends/local/library.py @@ -35,7 +35,9 @@ class LocalLibraryProvider(base.BaseLibraryProvider): logger.debug('Failed to lookup %r', uri) return [] - def find_exact(self, **query): + def find_exact(self, query=None): + if query is None: + query = {} self._validate_query(query) result_tracks = self._uri_mapping.values() @@ -72,7 +74,9 @@ class LocalLibraryProvider(base.BaseLibraryProvider): raise LookupError('Invalid lookup field: %s' % field) return SearchResult(uri='file:search', tracks=result_tracks) - def search(self, **query): + def search(self, query=None): + if query is None: + query = {} self._validate_query(query) result_tracks = self._uri_mapping.values() diff --git a/mopidy/backends/spotify/library.py b/mopidy/backends/spotify/library.py index 96e5f616..0a58a79a 100644 --- a/mopidy/backends/spotify/library.py +++ b/mopidy/backends/spotify/library.py @@ -62,8 +62,8 @@ class SpotifyTrack(Track): class SpotifyLibraryProvider(base.BaseLibraryProvider): - def find_exact(self, **query): - return self.search(**query) + def find_exact(self, query=None): + return self.search(query=query) def lookup(self, uri): try: @@ -131,7 +131,7 @@ class SpotifyLibraryProvider(base.BaseLibraryProvider): def refresh(self, uri=None): pass # TODO - def search(self, **query): + def search(self, query=None): if not query: return self._get_all_tracks() diff --git a/mopidy/core/library.py b/mopidy/core/library.py index 29b2e797..26216846 100644 --- a/mopidy/core/library.py +++ b/mopidy/core/library.py @@ -43,7 +43,8 @@ class LibraryController(object): """ query = query or kwargs futures = [ - b.library.find_exact(**query) for b in self.backends.with_library] + b.library.find_exact(query=query) + for b in self.backends.with_library] return [result for result in pykka.get_all(futures) if result] def lookup(self, uri): @@ -106,5 +107,5 @@ class LibraryController(object): """ query = query or kwargs futures = [ - b.library.search(**query) for b in self.backends.with_library] + b.library.search(query=query) for b in self.backends.with_library] return [result for result in pykka.get_all(futures) if result] diff --git a/tests/core/library_test.py b/tests/core/library_test.py index e01696c7..603a8109 100644 --- a/tests/core/library_test.py +++ b/tests/core/library_test.py @@ -87,8 +87,10 @@ class CoreLibraryTest(unittest.TestCase): self.assertIn(result1, result) self.assertIn(result2, result) - self.library1.find_exact.assert_called_once_with(any=['a']) - self.library2.find_exact.assert_called_once_with(any=['a']) + self.library1.find_exact.assert_called_once_with( + query=dict(any=['a'])) + self.library2.find_exact.assert_called_once_with( + query=dict(any=['a'])) def test_find_exact_filters_out_none(self): track1 = Track(uri='dummy1:a') @@ -103,8 +105,10 @@ class CoreLibraryTest(unittest.TestCase): self.assertIn(result1, result) self.assertNotIn(None, result) - self.library1.find_exact.assert_called_once_with(any=['a']) - self.library2.find_exact.assert_called_once_with(any=['a']) + self.library1.find_exact.assert_called_once_with( + query=dict(any=['a'])) + self.library2.find_exact.assert_called_once_with( + query=dict(any=['a'])) def test_find_accepts_query_dict_instead_of_kwargs(self): track1 = Track(uri='dummy1:a') @@ -121,8 +125,10 @@ class CoreLibraryTest(unittest.TestCase): self.assertIn(result1, result) self.assertIn(result2, result) - self.library1.find_exact.assert_called_once_with(any=['a']) - self.library2.find_exact.assert_called_once_with(any=['a']) + self.library1.find_exact.assert_called_once_with( + query=dict(any=['a'])) + self.library2.find_exact.assert_called_once_with( + query=dict(any=['a'])) def test_search_combines_results_from_all_backends(self): track1 = Track(uri='dummy1:a') @@ -139,8 +145,10 @@ class CoreLibraryTest(unittest.TestCase): self.assertIn(result1, result) self.assertIn(result2, result) - self.library1.search.assert_called_once_with(any=['a']) - self.library2.search.assert_called_once_with(any=['a']) + self.library1.search.assert_called_once_with( + query=dict(any=['a'])) + self.library2.search.assert_called_once_with( + query=dict(any=['a'])) def test_search_filters_out_none(self): track1 = Track(uri='dummy1:a') @@ -155,8 +163,10 @@ class CoreLibraryTest(unittest.TestCase): self.assertIn(result1, result) self.assertNotIn(None, result) - self.library1.search.assert_called_once_with(any=['a']) - self.library2.search.assert_called_once_with(any=['a']) + self.library1.search.assert_called_once_with( + query=dict(any=['a'])) + self.library2.search.assert_called_once_with( + query=dict(any=['a'])) def test_search_accepts_query_dict_instead_of_kwargs(self): track1 = Track(uri='dummy1:a') @@ -173,5 +183,7 @@ class CoreLibraryTest(unittest.TestCase): self.assertIn(result1, result) self.assertIn(result2, result) - self.library1.search.assert_called_once_with(any=['a']) - self.library2.search.assert_called_once_with(any=['a']) + self.library1.search.assert_called_once_with( + query=dict(any=['a'])) + self.library2.search.assert_called_once_with( + query=dict(any=['a']))