Merge pull request #384 from jodal/feature/extension-names

Explicitly defined extension names
This commit is contained in:
Thomas Adamcik 2013-04-02 06:00:25 -07:00
commit 0302a6802a
12 changed files with 36 additions and 17 deletions

View File

@ -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',
],
},
@ -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):

View File

@ -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
@ -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

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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',

View File

@ -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)