Move exceptions to mopidy.exceptions
This commit is contained in:
parent
7c997d9221
commit
d9d6a3d5b6
@ -48,28 +48,6 @@ def get_python():
|
||||
return u' '.join([implementation, version])
|
||||
|
||||
|
||||
class MopidyException(Exception):
|
||||
def __init__(self, message, *args, **kwargs):
|
||||
super(MopidyException, self).__init__(message, *args, **kwargs)
|
||||
self._message = message
|
||||
|
||||
@property
|
||||
def message(self):
|
||||
"""Reimplement message field that was deprecated in Python 2.6"""
|
||||
return self._message
|
||||
|
||||
@message.setter # noqa
|
||||
def message(self, message):
|
||||
self._message = message
|
||||
|
||||
|
||||
class SettingsError(MopidyException):
|
||||
pass
|
||||
|
||||
|
||||
class OptionalDependencyError(MopidyException):
|
||||
pass
|
||||
|
||||
from mopidy import settings as default_settings_module
|
||||
from mopidy.utils.settings import SettingsProxy
|
||||
settings = SettingsProxy(default_settings_module)
|
||||
|
||||
@ -29,7 +29,7 @@ sys.path.insert(
|
||||
|
||||
|
||||
import mopidy
|
||||
from mopidy import audio, core, settings, utils
|
||||
from mopidy import audio, core, exceptions, settings, utils
|
||||
from mopidy.utils import log, path, process
|
||||
from mopidy.utils.deps import list_deps_optparse_callback
|
||||
from mopidy.utils.settings import list_settings_optparse_callback
|
||||
@ -51,7 +51,7 @@ def main():
|
||||
core_ref = setup_core(audio_ref, backend_ref)
|
||||
setup_frontends(core_ref)
|
||||
loop.run()
|
||||
except mopidy.SettingsError as ex:
|
||||
except exceptions.SettingsError as ex:
|
||||
logger.error(ex.message)
|
||||
except KeyboardInterrupt:
|
||||
logger.info(u'Interrupted. Exiting...')
|
||||
@ -117,7 +117,7 @@ def setup_settings(interactive):
|
||||
path.get_or_create_file(mopidy.SETTINGS_FILE)
|
||||
try:
|
||||
settings.validate(interactive)
|
||||
except mopidy.SettingsError as ex:
|
||||
except exceptions.SettingsError as ex:
|
||||
logger.error(ex.message)
|
||||
sys.exit(1)
|
||||
|
||||
@ -150,7 +150,7 @@ def setup_frontends(core):
|
||||
for frontend_class_name in settings.FRONTENDS:
|
||||
try:
|
||||
utils.get_class(frontend_class_name).start(core=core)
|
||||
except mopidy.OptionalDependencyError as ex:
|
||||
except exceptions.OptionalDependencyError as ex:
|
||||
logger.info(u'Disabled: %s (%s)', frontend_class_name, ex)
|
||||
|
||||
|
||||
@ -158,7 +158,7 @@ def stop_frontends():
|
||||
for frontend_class_name in settings.FRONTENDS:
|
||||
try:
|
||||
process.stop_actors_by_class(utils.get_class(frontend_class_name))
|
||||
except mopidy.OptionalDependencyError:
|
||||
except exceptions.OptionalDependencyError:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
21
mopidy/exceptions.py
Normal file
21
mopidy/exceptions.py
Normal file
@ -0,0 +1,21 @@
|
||||
class MopidyException(Exception):
|
||||
def __init__(self, message, *args, **kwargs):
|
||||
super(MopidyException, self).__init__(message, *args, **kwargs)
|
||||
self._message = message
|
||||
|
||||
@property
|
||||
def message(self):
|
||||
"""Reimplement message field that was deprecated in Python 2.6"""
|
||||
return self._message
|
||||
|
||||
@message.setter # noqa
|
||||
def message(self, message):
|
||||
self._message = message
|
||||
|
||||
|
||||
class SettingsError(MopidyException):
|
||||
pass
|
||||
|
||||
|
||||
class OptionalDependencyError(MopidyException):
|
||||
pass
|
||||
@ -1,16 +1,14 @@
|
||||
import logging
|
||||
import time
|
||||
|
||||
from pykka.actor import ThreadingActor
|
||||
|
||||
from mopidy import core, exceptions, settings
|
||||
|
||||
try:
|
||||
import pylast
|
||||
except ImportError as import_error:
|
||||
from mopidy import OptionalDependencyError
|
||||
raise OptionalDependencyError(import_error)
|
||||
|
||||
from pykka.actor import ThreadingActor
|
||||
|
||||
from mopidy import core, settings, SettingsError
|
||||
|
||||
raise exceptions.OptionalDependencyError(import_error)
|
||||
|
||||
logger = logging.getLogger('mopidy.frontends.lastfm')
|
||||
|
||||
@ -50,7 +48,7 @@ class LastfmFrontend(ThreadingActor, core.CoreListener):
|
||||
api_key=API_KEY, api_secret=API_SECRET,
|
||||
username=username, password_hash=password_hash)
|
||||
logger.info(u'Connected to Last.fm')
|
||||
except SettingsError as e:
|
||||
except exceptions.SettingsError as e:
|
||||
logger.info(u'Last.fm scrobbler not started')
|
||||
logger.debug(u'Last.fm settings error: %s', e)
|
||||
self.stop()
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from mopidy import MopidyException
|
||||
from mopidy.exceptions import MopidyException
|
||||
|
||||
|
||||
class MpdAckError(MopidyException):
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
import logging
|
||||
|
||||
from pykka.actor import ThreadingActor
|
||||
|
||||
from mopidy import core, settings
|
||||
from mopidy.frontends.mpris import objects
|
||||
|
||||
logger = logging.getLogger('mopidy.frontends.mpris')
|
||||
|
||||
try:
|
||||
@ -8,11 +13,6 @@ except ImportError as import_error:
|
||||
indicate = None # noqa
|
||||
logger.debug(u'Startup notification will not be sent (%s)', import_error)
|
||||
|
||||
from pykka.actor import ThreadingActor
|
||||
|
||||
from mopidy import core, settings
|
||||
from mopidy.frontends.mpris import objects
|
||||
|
||||
|
||||
class MprisFrontend(ThreadingActor, core.CoreListener):
|
||||
"""
|
||||
|
||||
@ -7,7 +7,7 @@ try:
|
||||
import dbus.service
|
||||
import gobject
|
||||
except ImportError as import_error:
|
||||
from mopidy import OptionalDependencyError
|
||||
from mopidy.exceptions import OptionalDependencyError
|
||||
raise OptionalDependencyError(import_error)
|
||||
|
||||
from mopidy import settings
|
||||
|
||||
@ -6,7 +6,7 @@ import threading
|
||||
from pykka import ActorDeadError
|
||||
from pykka.registry import ActorRegistry
|
||||
|
||||
from mopidy import SettingsError
|
||||
from mopidy import exceptions
|
||||
|
||||
logger = logging.getLogger('mopidy.utils.process')
|
||||
|
||||
@ -59,7 +59,7 @@ class BaseThread(threading.Thread):
|
||||
self.run_inside_try()
|
||||
except KeyboardInterrupt:
|
||||
logger.info(u'Interrupted by user')
|
||||
except SettingsError as e:
|
||||
except exceptions.SettingsError as e:
|
||||
logger.error(e.message)
|
||||
except ImportError as e:
|
||||
logger.error(e)
|
||||
|
||||
@ -8,7 +8,7 @@ import os
|
||||
import pprint
|
||||
import sys
|
||||
|
||||
from mopidy import SettingsError, SETTINGS_PATH, SETTINGS_FILE
|
||||
from mopidy import exceptions, SETTINGS_PATH, SETTINGS_FILE
|
||||
from mopidy.utils import log
|
||||
from mopidy.utils import path
|
||||
|
||||
@ -53,11 +53,11 @@ class SettingsProxy(object):
|
||||
|
||||
current = self.current # bind locally to avoid copying+updates
|
||||
if attr not in current:
|
||||
raise SettingsError(u'Setting "%s" is not set.' % attr)
|
||||
raise exceptions.SettingsError(u'Setting "%s" is not set.' % attr)
|
||||
|
||||
value = current[attr]
|
||||
if isinstance(value, basestring) and len(value) == 0:
|
||||
raise SettingsError(u'Setting "%s" is empty.' % attr)
|
||||
raise exceptions.SettingsError(u'Setting "%s" is empty.' % attr)
|
||||
if not value:
|
||||
return value
|
||||
if attr.endswith('_PATH') or attr.endswith('_FILE'):
|
||||
@ -77,7 +77,7 @@ class SettingsProxy(object):
|
||||
logger.error(
|
||||
u'Settings validation errors: %s',
|
||||
log.indent(self.get_errors_as_string()))
|
||||
raise SettingsError(u'Settings validation failed.')
|
||||
raise exceptions.SettingsError(u'Settings validation failed.')
|
||||
|
||||
def _read_missing_settings_from_stdin(self, current, runtime):
|
||||
for setting, value in sorted(current.iteritems()):
|
||||
|
||||
@ -2,7 +2,7 @@ import sys
|
||||
|
||||
import mock
|
||||
|
||||
from mopidy import OptionalDependencyError
|
||||
from mopidy.exceptions import OptionalDependencyError
|
||||
from mopidy.models import Track
|
||||
|
||||
try:
|
||||
|
||||
@ -4,14 +4,14 @@ import mock
|
||||
|
||||
from pykka.registry import ActorRegistry
|
||||
|
||||
from mopidy import core, OptionalDependencyError
|
||||
from mopidy import core, exceptions
|
||||
from mopidy.backends import dummy
|
||||
from mopidy.core import PlaybackState
|
||||
from mopidy.models import Album, Artist, Track
|
||||
|
||||
try:
|
||||
from mopidy.frontends.mpris import objects
|
||||
except OptionalDependencyError:
|
||||
except exceptions.OptionalDependencyError:
|
||||
pass
|
||||
|
||||
from tests import unittest
|
||||
|
||||
@ -4,12 +4,12 @@ import mock
|
||||
|
||||
from pykka.registry import ActorRegistry
|
||||
|
||||
from mopidy import core, settings, OptionalDependencyError
|
||||
from mopidy import core, exceptions, settings
|
||||
from mopidy.backends import dummy
|
||||
|
||||
try:
|
||||
from mopidy.frontends.mpris import objects
|
||||
except OptionalDependencyError:
|
||||
except exceptions.OptionalDependencyError:
|
||||
pass
|
||||
|
||||
from tests import unittest
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import os
|
||||
|
||||
import mopidy
|
||||
from mopidy import exceptions, settings
|
||||
from mopidy.utils import settings as setting_utils
|
||||
|
||||
from tests import unittest
|
||||
@ -79,7 +79,7 @@ class ValidateSettingsTest(unittest.TestCase):
|
||||
|
||||
class SettingsProxyTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.settings = setting_utils.SettingsProxy(mopidy.settings)
|
||||
self.settings = setting_utils.SettingsProxy(settings)
|
||||
self.settings.local.clear()
|
||||
|
||||
def test_set_and_get_attr(self):
|
||||
@ -90,7 +90,7 @@ class SettingsProxyTest(unittest.TestCase):
|
||||
try:
|
||||
self.settings.TEST
|
||||
self.fail(u'Should raise exception')
|
||||
except mopidy.SettingsError as e:
|
||||
except exceptions.SettingsError as e:
|
||||
self.assertEqual(u'Setting "TEST" is not set.', e.message)
|
||||
|
||||
def test_getattr_raises_error_on_empty_setting(self):
|
||||
@ -98,7 +98,7 @@ class SettingsProxyTest(unittest.TestCase):
|
||||
try:
|
||||
self.settings.TEST
|
||||
self.fail(u'Should raise exception')
|
||||
except mopidy.SettingsError as e:
|
||||
except exceptions.SettingsError as e:
|
||||
self.assertEqual(u'Setting "TEST" is empty.', e.message)
|
||||
|
||||
def test_getattr_does_not_raise_error_if_setting_is_false(self):
|
||||
@ -184,7 +184,7 @@ class SettingsProxyTest(unittest.TestCase):
|
||||
|
||||
class FormatSettingListTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.settings = setting_utils.SettingsProxy(mopidy.settings)
|
||||
self.settings = setting_utils.SettingsProxy(settings)
|
||||
|
||||
def test_contains_the_setting_name(self):
|
||||
self.settings.TEST = u'test'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user