From 7d78d02d590e6f9ebdd6524d2b21bf52983320ea Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Tue, 2 Apr 2013 12:04:03 +0200 Subject: [PATCH 1/2] ext: Add both dist_name and ext_name to Extension class --- docs/extensiondev.rst | 3 ++- mopidy/__main__.py | 11 +++++++++-- mopidy/backends/local/__init__.py | 3 ++- mopidy/backends/spotify/__init__.py | 3 ++- mopidy/backends/stream/__init__.py | 3 ++- mopidy/ext.py | 3 ++- mopidy/frontends/http/__init__.py | 3 ++- mopidy/frontends/lastfm/__init__.py | 3 ++- mopidy/frontends/mpd/__init__.py | 3 ++- mopidy/frontends/mpris/__init__.py | 3 ++- tests/ext_test.py | 7 +++++-- 11 files changed, 32 insertions(+), 13 deletions(-) diff --git a/docs/extensiondev.rst b/docs/extensiondev.rst index 73457c54..c55eb6e4 100644 --- a/docs/extensiondev.rst +++ b/docs/extensiondev.rst @@ -234,7 +234,8 @@ meaningful defaults blank, like ``username`` and ``password``. class Extension(ext.Extension): - name = 'Mopidy-Soundspot' + dist_name = 'Mopidy-Soundspot' + ext_name = 'soundspot' version = __version__ def get_default_config(self): diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 8d8d7d62..44ec38d5 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -145,18 +145,25 @@ def load_extensions(): extension = extension_class() + if entry_point.name != extension.ext_name: + logger.warning( + 'Disabled extension %(ep)s: entry point name (%(ep)s) ' + 'does not match extension name (%(ext)s)', + {'ep': entry_point.name, 'ext': extension.ext_name}) + continue + # TODO Validate configuration try: extension.validate_environment() except exceptions.ExtensionError as ex: logger.info( - 'Disabled extension: %s (%s)', extension.name, ex.message) + 'Disabled extension %s: %s', entry_point.name, ex.message) continue logger.info( 'Loaded extension %s: %s %s', - entry_point.name, extension.name, extension.version) + entry_point.name, extension.dist_name, extension.version) extensions.append(extension) return extensions diff --git a/mopidy/backends/local/__init__.py b/mopidy/backends/local/__init__.py index 42477b53..bd9a6d1a 100644 --- a/mopidy/backends/local/__init__.py +++ b/mopidy/backends/local/__init__.py @@ -46,7 +46,8 @@ None class Extension(ext.Extension): - name = 'Mopidy-Local' + dist_name = 'Mopidy-Local' + ext_name = 'local' version = mopidy.__version__ def get_default_config(self): diff --git a/mopidy/backends/spotify/__init__.py b/mopidy/backends/spotify/__init__.py index 4c3b67fe..d9fdb630 100644 --- a/mopidy/backends/spotify/__init__.py +++ b/mopidy/backends/spotify/__init__.py @@ -67,7 +67,8 @@ https://github.com/mopidy/mopidy/issues?labels=Spotify+backend class Extension(ext.Extension): - name = 'Mopidy-Spotify' + dist_name = 'Mopidy-Spotify' + ext_name = 'spotify' version = mopidy.__version__ def get_default_config(self): diff --git a/mopidy/backends/stream/__init__.py b/mopidy/backends/stream/__init__.py index 097efc45..d14275b0 100644 --- a/mopidy/backends/stream/__init__.py +++ b/mopidy/backends/stream/__init__.py @@ -45,7 +45,8 @@ None class Extension(ext.Extension): - name = 'Mopidy-Stream' + dist_name = 'Mopidy-Stream' + ext_name = 'stream' version = mopidy.__version__ def get_default_config(self): diff --git a/mopidy/ext.py b/mopidy/ext.py index 0097d8c6..bc26069c 100644 --- a/mopidy/ext.py +++ b/mopidy/ext.py @@ -5,7 +5,8 @@ from mopidy.utils import config class Extension(object): - name = None + dist_name = None + ext_name = None version = None def get_default_config(self): diff --git a/mopidy/frontends/http/__init__.py b/mopidy/frontends/http/__init__.py index 6160d47c..f7f9f659 100644 --- a/mopidy/frontends/http/__init__.py +++ b/mopidy/frontends/http/__init__.py @@ -519,7 +519,8 @@ Example to get started with class Extension(ext.Extension): - name = 'Mopidy-HTTP' + dist_name = 'Mopidy-HTTP' + ext_name = 'http' version = mopidy.__version__ def get_default_config(self): diff --git a/mopidy/frontends/lastfm/__init__.py b/mopidy/frontends/lastfm/__init__.py index f24e8f81..510856ea 100644 --- a/mopidy/frontends/lastfm/__init__.py +++ b/mopidy/frontends/lastfm/__init__.py @@ -44,7 +44,8 @@ The frontend is enabled by default if all dependencies are available. class Extension(ext.Extension): - name = 'Mopidy-Lastfm' + dist_name = 'Mopidy-Lastfm' + ext_name = 'lastfm' version = mopidy.__version__ def get_default_config(self): diff --git a/mopidy/frontends/mpd/__init__.py b/mopidy/frontends/mpd/__init__.py index dacbf69e..518da54a 100644 --- a/mopidy/frontends/mpd/__init__.py +++ b/mopidy/frontends/mpd/__init__.py @@ -88,7 +88,8 @@ near future: class Extension(ext.Extension): - name = 'Mopidy-MPD' + dist_name = 'Mopidy-MPD' + ext_name = 'mpd' version = mopidy.__version__ def get_default_config(self): diff --git a/mopidy/frontends/mpris/__init__.py b/mopidy/frontends/mpris/__init__.py index 407d4800..20ef0ea7 100644 --- a/mopidy/frontends/mpris/__init__.py +++ b/mopidy/frontends/mpris/__init__.py @@ -70,7 +70,8 @@ Now you can control Mopidy through the player object. Examples: class Extension(ext.Extension): - name = 'Mopidy-MPRIS' + dist_name = 'Mopidy-MPRIS' + ext_name = 'mpris' version = mopidy.__version__ def get_default_config(self): diff --git a/tests/ext_test.py b/tests/ext_test.py index d279b52f..b58333c2 100644 --- a/tests/ext_test.py +++ b/tests/ext_test.py @@ -10,8 +10,11 @@ class ExtensionTest(unittest.TestCase): def setUp(self): self.ext = Extension() - def test_name_is_none(self): - self.assertIsNone(self.ext.name) + def test_dist_name_is_none(self): + self.assertIsNone(self.ext.dist_name) + + def test_ext_name_is_none(self): + self.assertIsNone(self.ext.ext_name) def test_version_is_none(self): self.assertIsNone(self.ext.version) From 2e678ffe8fc29990643cd6fe64299ce7f849039d Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Tue, 2 Apr 2013 12:07:35 +0200 Subject: [PATCH 2/2] ext: Change entry point from 'mopidy.extension' to 'mopidy.ext' to be more consistent --- docs/extensiondev.rst | 4 ++-- mopidy/__main__.py | 2 +- setup.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/extensiondev.rst b/docs/extensiondev.rst index c55eb6e4..71ea9ec0 100644 --- a/docs/extensiondev.rst +++ b/docs/extensiondev.rst @@ -126,7 +126,7 @@ the PyPI registration. The package must have ``install_requires`` on ``setuptools`` and ``Mopidy``, in addition to any other dependencies required by your extension. The -``entry_points`` part must be included. The ``mopidy.extension`` part cannot be +``entry_points`` part must be included. The ``mopidy.ext`` part cannot be changed, but the innermost string should be changed. It's format is ``ext_name = package_name:Extension``. ``ext_name`` should be a short name for your extension, typically the part after "Mopidy-" in lowercase. This @@ -166,7 +166,7 @@ class that will connect the rest of the dots. 'pysoundspot', ], entry_points={ - b'mopidy.extension': [ + b'mopidy.ext': [ 'soundspot = mopidy_soundspot:Extension', ], }, diff --git a/mopidy/__main__.py b/mopidy/__main__.py index 44ec38d5..87a93865 100644 --- a/mopidy/__main__.py +++ b/mopidy/__main__.py @@ -130,7 +130,7 @@ def check_old_folders(): def load_extensions(): extensions = [] - for entry_point in pkg_resources.iter_entry_points('mopidy.extension'): + for entry_point in pkg_resources.iter_entry_points('mopidy.ext'): logger.debug('Loading extension %s', entry_point.name) # TODO Filter out disabled extensions diff --git a/setup.py b/setup.py index 8d3d6d5a..3c0b7c4c 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ setup( 'mopidy = mopidy.__main__:main', 'mopidy-scan = mopidy.scanner:main', ], - b'mopidy.extension': [ + b'mopidy.ext': [ 'http = mopidy.frontends.http:Extension [http]', 'lastfm = mopidy.frontends.lastfm:Extension [lastfm]', 'local = mopidy.backends.local:Extension',